Suppose I have a string like - "you can enter maximum 500 choices".
I need to extract 500
from the string.
The main problem is the String may vary like "you can enter maximum 12500 choices". So how to get the integer part?
This question is related to
javascript
regex
I thought I'd add my take on this since I'm only interested in the first integer I boiled it down to this:
let errorStringWithNumbers = "error: 404 (not found)";
let errorNumber = parseInt(errorStringWithNumbers.toString().match(/\d+/g)[0]);
.toString()
is added only if you get the "string" from an fetch error. If not, then you can remove it from the line.
I like @jesterjunk answer, however, a number is not always just digits. Consider those valid numbers: "123.5, 123,567.789, 12233234+E12"
So I just updated the regular expression:
var regex = /[\d|,|.|e|E|\+]+/g;
var string = "you can enter maximum 5,123.6 choices";
var matches = string.match(regex); // creates array from matches
document.write(matches); //5,123.6
// stringValue can be anything in which present any number
`const stringValue = 'last_15_days';
// /\d+/g is regex which is used for matching number in string
// match helps to find result according to regex from string and return match value
const result = stringValue.match(/\d+/g);
console.log(result);`
output will be 15
If You want to learn more about regex here are some links:
https://www.w3schools.com/jsref/jsref_obj_regexp.asp
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions
https://www.tutorialspoint.com/javascript/javascript_regexp_object.htm
You can also try this :
var string = "border-radius:10px 20px 30px 40px";_x000D_
var numbers = string.match(/\d+/g).map(Number);_x000D_
console.log(numbers)
_x000D_
var str = "you can enter maximum 500 choices";
str.replace(/[^0-9]/g, "");
console.log(str); // "500"
var regex = /\d+/g;_x000D_
var string = "you can enter 30%-20% maximum 500 choices";_x000D_
var matches = string.match(regex); // creates array from matches_x000D_
_x000D_
document.write(matches);
_x000D_
Use a regular expression.
var r = /\d+/;
var s = "you can enter maximum 500 choices";
alert (s.match(r));
The expression \d+
means "one or more digits". Regular expressions by default are greedy meaning they'll grab as much as they can. Also, this:
var r = /\d+/;
is equivalent to:
var r = new RegExp("\d+");
See the details for the RegExp object.
The above will grab the first group of digits. You can loop through and find all matches too:
var r = /\d+/g;
var s = "you can enter 333 maximum 500 choices";
var m;
while ((m = r.exec(s)) != null) {
alert(m[0]);
}
The g
(global) flag is key for this loop to work.
var regex = /\d+/g;_x000D_
var string = "you can enter maximum 500 choices";_x000D_
var matches = string.match(regex); // creates array from matches_x000D_
_x000D_
document.write(matches);
_x000D_
References:
http://www.regular-expressions.info/javascript.html
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp
Source: Stackoverflow.com