如果我这样做:的Javascript正则表达式:如何获得`1`,而不是`11`
var string = "7,11,2"
var check = string.match("/1/");
if(check != null){
doSomething();
} else {
doSomethingElse();
}
然后因为match
发现1
在11
check
不null
。那么我应该如何避免这种情况,并在1
真的出现时得到呢?
如果我这样做:的Javascript正则表达式:如何获得`1`,而不是`11`
var string = "7,11,2"
var check = string.match("/1/");
if(check != null){
doSomething();
} else {
doSomethingElse();
}
然后因为match
发现1
在11
check
不null
。那么我应该如何避免这种情况,并在1
真的出现时得到呢?
发生这种情况的原因是它匹配11
中的1
并将其称为匹配项。你必须确保没有跟随1.尝试另一个数字:
var check = string.match("/(^|\D)1(\D|$)/");
这将寻找通过不是数字或字符串(^
的开始/结束和文字环绕方式$
锚)。
另一种方式是将它与词边界锚定在一起:/\b1\b/
只会与1
匹配(如果未包含其他数字,字母或下划线)。所以它会适用于你的情况(并且可读性更强)。
但是,它会在像ID1OT这样的情况下失败 - 如果你想从那里提取1
,你只能用@NullUserException的方法来做到这一点。
非常感谢它完美的作品!我会尽快接受你的回答! – Adam 2010-09-25 04:00:38
@zolex请显示什么输入会打破正则表达式 – NullUserException 2010-09-25 04:05:35
这个正则表达式只适用于这种特殊情况。看到我的upcomming答案的正则表达式,以检查值是否在某种程度上分开列表... – 2010-09-25 04:05:56