2015-06-30 88 views
0
var serialNumber = $('#SerialNumber').val(); 
var serialNumberPattern = new RegExp('^[\s\da-zA-z\-.]+$'); 

if (!serialNumberPattern.test(serialNumber)) { 
} 

上面的序列號是我使用來驗證它有字母數字字符,點的序列號代碼,破折號(。)( - ),並在其中斜槓(/),但不知何故,它不是加工。我哪裏錯了?請幫忙。正則表達式在JavaScript

+0

逃逸所有反斜槓一次。多少次? –

+1

這個圓點不應該被削減嗎? like'\ .' – Dwza

+1

使用RegExp文字,即'/^[\ s \ da-z \ /.-] + $/i'。 –

回答

0

當您將正則表達式傳遞給使用"作爲正則表達式分隔符的RegExp構造函數時,必須再次轉義所有反斜槓。否則,它將被視爲轉義序列。

var serialNumberPattern = new RegExp("^[\\s\\da-zA-Z.-]+$"); 

字母數字,圓點,破折號(。)( - ),斜線(/)在它。

var serialNumberPattern = new RegExp("^[\\da-zA-Z./-]+$"); 
+0

我可以知道原因嗎? –

+0

爲什麼? op想要允許點。 –

+0

又是爲什麼?..... –

0

只要使用/^[\s\da-zA-Z\-.\/]+$/,它的簡單和工作得很好。

只有在表達式的一部分使用變量時,才應該使用RegExp構造函數。你的情況並非如此,只是增加了額外的困惑。

document.write(/^[\s\da-zA-Z\-.\/]+$/.test('23 43-89'))

+0

我試過這個,當測試時顯示錯誤23 43-89 – user2998990

+0

用'A-z' –