【问题标题】:RegEx - 1 to 10 Alphanumeric Spaces OkayRegEx - 1 到 10 个字母数字空格
【发布时间】:2023-04-11 03:29:02
【问题描述】:

正则表达式的新手。提前致谢!

需要验证的字段是 1-10 大小写混合的字母数字,并且允许使用空格。第一个字符必须是字母数字,而不是空格。

好例子:

“拉里·金”

“L King1”

“1larryking”

“L”

不好的例子:

“拉里金”

这就是我所拥有的,只要数据正好是 10 个字符,它就可以工作。问题是它不允许少于 10 个字符。

[0-9a-zA-Z][0-9a-zA-Z][0-9a-zA-Z][0-9a-zA-Z][0-9a-zA-Z][0 -9a-zA-Z ][0-9a-zA-Z ][0-9a-zA-Z ][0-9a-zA-Z ][0-9a-zA-Z ]

我已经阅读并尝试了许多不同的东西,但就是不明白。

谢谢,

贾斯汀

【问题讨论】:

  • 最后一个字符可以是空格吗?
  • [0-9a-zA-Z][0-9a-zA-Z ]{0,9}

标签: regex spaces alphanumeric variable-length


【解决方案1】:

不知道你用的是什么环境,什么引擎。所以我假设 PCRE(通常用于 PHP)

这个小正则表达式完全符合您的要求:^(?i)(?!\s)[a-z\d ]{1,10}$

发生了什么事?!

  • ^ 标记字符串的开始(删除它,如果表达式不能匹配整个字符串)
  • (?i) 告诉引擎不区分大小写,因此后面的表达式中无需将所有字母都写成小写和大写
  • (?!\s) 确保以下字符不会是 空白 空格 (\s)(这是所谓的负前瞻)
  • [a-z\d ]{1,10} 匹配连续出现的任何字母 (a-z)、任何数字 (\d) 和空格 (),最少出现 1 次,最多出现 10 次 ({1,10})
  • 末尾的$ 标记字符串的结尾(如果表达式不能匹配整个字符串,则删除它)

这里还有一个小的可视化,以便更好地理解。

Debuggex Demo

【讨论】:

    【解决方案2】:

    试试这个:[0-9a-zA-Z][0-9a-zA-Z ]{0,9}

    {x,y} 语法表示介于 xy 之间(含)。 {x,} 表示至少 x 次。

    【讨论】:

      【解决方案3】:

      你想要这样的东西。

      [a-zA-Z0-9][a-zA-Z0-9 ]{0,9}
      

      第一部分确保它是字母数字的。第二部分用空格获取您的字母数字。 {0,9} 允许第二部分出现 0 到 9 次。这会给你 1-10

      【讨论】:

        【解决方案4】:

        试试这个:^[(^\s)a-zA-Z0-9][a-z0-9A-Z ]*

        第一个字符不是空格和字母数字,然后是零个或多个字母数字字符。它不会限制在 10 个字符,但它适用于任何 1-10 个字符的集合。

        【讨论】:

        • [(^\s)a-zA-Z0-9] 表示“一个字符类,包含:括号、插入符号、ascii 字母(大写和小写)和 ascii 数字”
        【解决方案5】:

        以下内容在语义上可能是最正确的:

        (?=^[0-9a-zA-Z])(?=.*[0-9a-zA-Z]$)^[0-9a-zA-Z ]{1,10}$
        

        它断言第一个和最后一个字符是字母数字,并且整个字符串的长度为 1 到 10 个字符(包括空格)。

        【讨论】:

          【解决方案6】:

          我假设最后也不允许空格。

          ^[a-zA-Z0-9](?:[a-zA-Z0-9 ]{0,8}[a-zA-Z0-9])?$
          

          或使用 posix 字符类:

          ^[[:alnum:]](?:[[:alnum:] ]{0,8}[[:alnum:]])?$
          

          【讨论】:

            【解决方案7】:

            我认为最简单的方法是使用\w[\s\w]{0,9}

            请注意,\w 用于 [A-Za-z0-9_],因此如果您不想要 _,请将其替换为 [A-Za-z0-9] 请注意,\s 适用于任何白色字符,因此如果您不想要其他字符,请将其替换为

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多