Javascript REGEX: How to get `1` and not `11`
If I do this:
var string = "7,11,2"
var check = string.match("/1/");
if(check != null){
doSomething();
} 开发者_运维问答else {
doSomethingElse();
}
Then check is not null because match has found 1 in 11. So how should I avoid this and get 1 when it really appears?
That is happening because it matches a 1 in 11 and calls it a match. You have to make sure that there isn't another number following the 1. Try:
var check = string.match("/(^|\D)1(\D|$)/");
This will look for a way surrounded by characters that are not digits, or the start/end of string (the ^ and $ anchors).
Another way would be to surround it with word boundary anchors: /\b1\b/ will only match a 1 if it is not surrounded by other numbers, letters, or underscore. So it would work in your case (and is a bit more readable).
It will, however, fail in cases like ID1OT - if you wanted to extract the 1 from there, you could only do that with @NullUserException's method.
加载中,请稍侯......
精彩评论