2017-05-17 51 views
-1

我有一個表單,我想禁用< > # @和單獨的數字('test 123'應該工作)。使用jQuery在輸入表單中單獨禁用標籤和數字

對於第一個條件我試圖

if ($(this).val().match("^[^>#<@*]+$")) { // todo } 

但每次匹配..

我已經檢查#2,W3Schools的等,但我不知道爲什麼我不能申請正則表達式

謝謝

+1

號碼如'5'?這是否意味着什麼? –

+0

我的意思是如果該值等於只是一個數字(如int),它不應該工作。 –

+0

嘗試'.match(/ ^(?!\ d + $)[^>#<@ *] + $ /)'。儘管如此,我寧願將它與「RegExp#test」方法一起使用。 '/ ^(?!\ d + $)[^>#<@ *] + $ /測試(多個)'。 –

回答

1

您需要負回顧後添加到您使用的模式,並定義像

/^(?!\d+$)[^>#<@*]+$/ 

正則表達式見regex demo(注意\n是因爲演示輸入字符串包含換行符)。

詳細

  • ^ - 串
  • 開始
  • (?!\d+$) - 輸入字符串不能只包含1+位數
  • [^>#<@*]+ - 1個或多個字符比>#<其他,@*
  • $ - 字符串結尾。

用它與RegExp#test只返回truefalse(與String#match,沒有涉及與值返回所有的數組,你不需要在這裏不必要的開銷):

if (/^(?!\d+$)[^>#<@*]+$/.test($(this).val())) {....} 
+1

作品也謝謝你! ,我給你的綠色檢查,因爲你比其他答案更好地解釋我 –

+0

@XavierC .:實際上,它是根據您的原始要求運作的答案。如果第二行有非數字,而第一行沒有數字,則Gawil的答案將會失敗,而Bhushan的解決方案只是匹配任何字符串,在字符串內部任何位置包含1個字母數字或空白字符*。如果您否定測試檢查,則會匹配不包含這些字符的字符串。我相信我的答案是唯一正確的答案。 –

+0

是的,我通過查看您的RegEx,A +老兄瞭解了它! –

1

如果我理解正確,你想匹配字符串至少有一個字符不是一個數字,沒有以下字符RS:<, >, # and @
你可以做到這一點與此正則表達式:
(?=.*\D)[^<>#@]*

1

嘗試以下:使用RegExp對象可以測試模式如下圖所示

var regEx = new RegExp("[0-9a-zA-Z\\s]+"); 
if (regEx.test($(this).val())) 
+0

這匹配號碼 – Gawil