2011-10-06 82 views
0

我讓用戶輸入一些標籤。這些標記應該只包含字符:如何僅允許jQuery字符串中的某些特定字符

  • [a-z]
  • [A-Z]
  • [0-9]
  • 和字符-

如果任何其他字符存在,應該從字符串刪除。

這可能嗎?什麼是最快的方法呢?

+0

你可以用JavaScript做到這一點,不需要jQuery。你已經嘗試了什麼?提示提示:String。['replace'](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String/replace) – slhck

+0

使用正則表達式來查找和刪除它們與常規的js。 – jtfairbank

回答

4

無需jQuery的:

str.replace(/[^a-z0-9\-]/ig,""); 

會刪除任何東西,這不是一個字母,數字或破折號。

7

可以將keyup事件處理程序分配到相關input元件和過濾器使用此代碼的值:

$("input").keyup(function(){ 
    var value = $(this).val().replace(/[^-a-zA-Z0-9]/g, ""); 
    $(this).val(value) 
}) 
  • $("input")選擇所有input元素。 調整此選擇器以符合您的願望。
  • 當用戶釋放密鑰時,會觸發keyup事件。
  • $(this).val()返回當前輸入元素的值。
  • [^-a-zA-Z0-9]匹配任何無效字符/[^-a-z0-9]/i具有相同的效果)
  • /g全球標誌,這意味着:匹配正則表達式的每個匹配。
  • .replace(/.../g, "")通過一個空字符串替換所有的無效字符(=刪除所有無效字符)
  • $(this).val(value)改變當前輸入元件到一個有效的字符串值。
+0

...或使用'gi'和只是'a-z'。 (會更快嗎?) – slhck

2

一個簡單的正則表達式替換:

userInputString.replace(/[^a-z0-9\-]/ig, "") 
相關問題