【问题标题】:javascript regex to warn invalid usernamejavascript正则表达式警告无效用户名
【发布时间】:2017-10-05 13:41:17
【问题描述】:

这些是有效用户名的条件

  1. 必须包含 a-z 或 A-Z
  2. 可以在任何地方包含 0-9
  3. 不得有任何其他字符

所以a00a 是有效的用户名,就像usernameUserName。我需要一个正则表达式。

问题可选地允许 0-9

更新/\w+/i 这样的正则表达式的问题是它允许像000 这样的用户名,但在我的情况下,它必须包含一个字母而不是任何特殊字符

【问题讨论】:

  • 这是一个非常简单的表达式。你试过什么?
  • 这个问题在 StackOverflow 上已经回答过很多次了
  • @Scott 我的问题是可选地允许 [0-9]
  • 试试这个 /\w+/g
  • @RenzoCC 这允许09 作为用户名,但它必须包含至少一个字母

标签: javascript regex


【解决方案1】:

可能是这样的:

/^[a-zA-z0-9]*[a-zA-z][a-zA-z0-9]*$/

【讨论】:

  • 它允许user+
【解决方案2】:

你不知道如何组合前瞻?只需使用

var isValid = /[a-zA-Z]/.test(username) && /^[a-zA-Z\d]$/.test(username);
              ^^^^^^^^^ at last one char
                                           ^^^^^^^^^^^^^only char & digits

您想提前学习吗?只需使用:

var isValid = /^(?=.*[a-z])[a-z\d]+$/gmi.test(username);

【讨论】:

    【解决方案3】:

    工作正则表达式是/^([0-9]+[a-zA-Z]|[a-zA-Z]+[0-9]|[a-zA-Z])+$/

    确实匹配 0a a0 aaa

    但不会匹配 000+aa+

    请在投下选票之前完整阅读问题

    【讨论】:

    • 我已经编辑了我的答案并发布了有效且更简单的正则表达式
    • 虽然这确实有效,但我在评论^(?=.*[a-zA-Z])[a-zA-Z0-9]+$ 中添加的正则表达式在所有情况下都将以偶数或更少的步骤执行。 @AndrzejSmyk 发布的那个在所有情况下也将使用更少的步骤
    【解决方案4】:

    简单的解决方案:

    /^(\d*[a-zA-Z]+\d*)+$/
    

    【讨论】:

    • [\d]\d 相同,不需要方括号[]。另外开头多了一个(,所以这个是无效的
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-28
    • 2011-05-11
    • 2022-01-25
    • 1970-01-01
    • 2010-09-07
    相关资源
    最近更新 更多