如何仅使用jQuery允许字符串中的某些特定字符

时间:2011-10-06 21:53:39

标签: jquery regex string escaping

我让用户输入一些标签。这些标签应仅包含字符:

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

如果存在任何其他字符,则应将其从字符串中删除。

这可能吗?最快的方法是什么?

3 个答案:

答案 0 :(得分: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全局标志,表示:匹配每次出现的RegExp。
  • .replace(/.../g, "")用空字符串替换所有无效字符(=删除所有无效字符)
  • $(this).val(value)将当前输入元素的值更改为有效字符串。

答案 1 :(得分:4)

不需要jQuery:

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

将删除任何不是字母,数字或破折号的内容。

答案 2 :(得分:2)

一个简单的正则表达式替换:

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