【问题标题】:Javascript regex character set restriction related queryJavascript regex 字符集限制相关查询
【发布时间】:2016-04-12 09:47:57
【问题描述】:

我正在使用下面提到的 JavaScript RegEx:

^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*([-_.])).+$

这仅接受具有至少 1 个的文本:大写字母、小写字母、数字和来自 .-_ 的特殊符号。

现在假设我提供 User-123 作为用户 ID,这与上述 RegEx 确认并使用屏幕键盘输入芬兰语字符,结果为 User-123Ã

正则表达式已完成,文本被我的 JavaScript 代码接受,但我希望它只接受英文字母数字输入,不接受其他任何内容。

我应该如何增强这个 RegEx 来做到这一点?

【问题讨论】:

  • 检查.+$ - 它允许所有字母。您可以改用[\w.-]+$ 来限制您在前瞻中需要的字符。
  • 也许有这样的正则表达式会更清楚:[^A-Za-z\d_.-],如果匹配则抛出错误。
  • @WiktorStribizew,请在答案部分开始写答案。这不是我第一次浪费 2 多分钟阅读您已经在 cmets 中回答的问题。
  • ndn - 请发表您认为正确的内容 - 我不知道真正的答案是什么。
  • 我不认为仅仅发布“使用my_cool_code_or_regex”是一个有效的答案。这就是为什么我没有发表我的评论。写一个答案需要时间,而且我并不总是有很多时间。

标签: javascript regex


【解决方案1】:

这个字符串“User-123Ô已经包含Unicode“Ô而不是字母,那么如何识别js代码,

[Code]  [Glyph] [Decimal]   [HTML]      Description                         [#]
U+00C3  Ã       Ã      Ã    Latin Capital letter A with tilde   0131

也试试这个链接, How to find whether a particular string has unicode characters

【讨论】:

    【解决方案2】:

    我不确定这是否能解决问题,但在大多数情况下,当您希望将 输入 本身限制为某些字符时,您的 消费 模式应该只匹配那些您允许的字符。前瞻限制只是要求或禁止某些字符在某些位置出现一定次数,但您在消费部分匹配的内容至关重要。

    .+$ 允许所有字母。将其替换为 [\w.-]+$ (\w = [a-zA-Z0-9_]),而不是限制为前瞻中所需的字符。

    【讨论】:

      猜你喜欢
      • 2013-02-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-05
      • 2010-10-13
      相关资源
      最近更新 更多