如果我這樣做:的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