【问题标题】:How to allow only some specific chars in a string with jQuery如何使用 jQuery 只允许字符串中的某些特定字符
【发布时间】:2011-10-06 21:53:38
【问题描述】:

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

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

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

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

【问题讨论】:

  • 你可以用 JavaScript 做到这一点,不需要 jQuery。你已经尝试过什么?提示提示:String.replace
  • 使用正则表达式通过常规js查找和删除它们。

标签: jquery regex string escaping


【解决方案1】:

您可以将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 具有相同的效果)
  • /gglobal 标志,表示:匹配 RegExp 的每一次出现。
  • .replace(/.../g, "") 用空字符串替换所有无效字符(=删除所有无效字符)
  • $(this).val(value) 将当前输入元素的值更改为有效字符串。

【讨论】:

  • ... 或使用 gia-z。 (那会更快吗?)
【解决方案2】:

不需要 jQuery:

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

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

【讨论】:

    【解决方案3】:

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

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

    【讨论】:

      猜你喜欢
      • 2010-12-09
      • 1970-01-01
      • 1970-01-01
      • 2018-03-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-27
      相关资源
      最近更新 更多