2011-10-06 41 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, "") 
相关问题