我需要驗證一個字符串,該字符串可以包含任意數量的字符,逗號和2個字符。我有一些問題。下面是我有:正則表達式問題 - 字符限制和空白忽略
var str="ab,cdf";
var patt1=new RegExp("[A-z]{2,}[,][A-z]{2}");
if(patt1.test(str)) {
alert("true");
}
else {
alert("false");
}
我希望它可以返回false,因爲我對角色的{2}
限制逗號後,這串具有三個字符。但是,當我運行fiddle時,它會返回true。我對RegExp的理解(當然是有限的)表明{2,}
至少是2,而{2}
恰好是2,所以我不確定爲什麼在逗號後面的三個字符仍然返回true。
我還需要能夠忽略逗號和其餘兩個字符之間可能的空格。 (換句話說,如果它們在逗號之前有2個字符,而在它之後有兩個字符,那麼我希望它返回true - 兩個之後它不包括用戶可能已輸入的任何空格。)
所以所有這些應該返回true:
var str = "ab, cd";
var str = "abc, cd";
var str = "ab,cd";
var str = "abc,dc";
我已經試過逗號這樣以後添加\S
指標:
var patt1=new RegExp("[A-z]{2,}[,]\S[A-z]{2}");
但隨後的字符串返回false所有的時間,甚至當我有它設置爲ab, cd
,這應該返回true。
我錯過了什麼?
[你擺弄的代碼(http://jsfiddle.net/EmmyS/z2fTr /)實際上與[您的問題的代碼](http://stackoverflow.com/q/17751150/578288)不同。它表示「{2,}」而不是「{2}」。但這不是問題;當我解決這個問題時,你的小提琴仍然會提示'真實'。 –
你的'\ S'問題(除了它應該是'\ s'的事實)是字符串轉義。你在''''引號內加載你的正則表達式,而不是'''文字的語法,所以你需要在你引用內的任何'\'字符轉義爲\\'。 –
嘗試http://regexpal.com/這是很好的實驗。 – Jacob