This function is retrieving the last numbers of a string:
function getLastNumberOfString(str){
var allNumbers = str.replace(/[^0-9]/g, ' ').trim().split(/\s+/);
return parseInt(allNumbers[allNumbers.length - 1], 10);
}
I want it to retrieve the last numbers of a string, if it contains at least 4 digits.
For example:
"1234-string-text/8177-1-3-tools-for-knowledge.html"
Is returning:
3
I’d like it to return:
8177
>Solution :
To match last set of numbers containing at least 4 digits use:
\d{4,}(?!.+\d{4})
RegEx Details:
\d{4,}: Match 4 or more digits(?!.+\d{4}): Negative Lookahead to assert that there is no other occurrence of 4 digit numbers ahead
Code:
function getLastNumberOfString(str){
var m = str.match(/\d{4,}(?!.+\d{4})/);
return (m ? parseInt(m[0]) : NaN);
}
console.log(getLastNumberOfString("1234-string-text/8177-1-3-tools-for-knowledge.html"));
console.log(getLastNumberOfString("tools-for-knowledge.html"));