2015-12-08 124 views
0

我試圖檢查使用正則表達式的文本input中是否有數字。這裏的代碼:允許使用正則表達式的空字符串

var regex = /^[0-9]+$/; 
if (myInput.val().match(regex)) { 
    console.log("number"); 
} else { 
    console.log("bad"); 
} 

它運作良好,但如果我添加文本,然後退格一路,我得到「壞」。如何在input文本中沒有任何內容時記錄「好」?我不想讓空格,但我想允許一個空的input

我想:

var regex = /\s ^[0-9]+$/; 

但後來不管我在input插入,我總是得到 「壞」。

+2

嘗試'/^[0-9] * $ /'和'使用正則表達式#test',而不是'字符串#match' – Tushar

+0

爲什麼不只是做兩個檢查? 'if(!val.length || val.match(regex))' – epascarello

+0

@Tushar你能否解釋一下RegExp#測試,並解釋它爲什麼比我更好? – Horay

回答

0

這可能適合,無論你測試你的精通(^[a-zA-Z0-9]+$)或空字符串(^$)

var regex = /(^$)|(^[a-zA-Z0-9]+$)/; 
if (myInput.val().match(regex)) { 
    console.log("number"); 
} else { 
    console.log("bad"); 
} 
+0

你的答案與@ gurvinder372的答案有什麼不同?建議哪一個,爲什麼? – Horay

+0

在我的RegEx中,我嘗試首先檢查空字符串,如果不是這種情況,我正在檢查數字。基本上和gurvinder一樣,但是一方面我不會對'*'操作符感到舒服,另一方面它可能運行得更快,如果你先檢查一個空字符串,然後再使用「更大」的字符串。另外,您是否在您的OP中閱讀了我的評論? – yoko

+0

使用'*'不好嗎? – Horay

1

試試這個(*到位+的)

var regex = /^[0-9]*$/; 
if (myInput.val().test(regex)) { 
    console.log("number"); 
} else { 
    console.log("bad"); 
} 
+0

@elclanrs謝謝,你能在這裏展示它http://refiddle.com/ – gurvinder372

相關問題