开发者

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.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜