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.
精彩评论