首页 文章

正则表达式,用于在开始时不允许空格

提问于
浏览
1

一个正则表达式,仅允许字母表中的字母和数字以及空格,最大大小为 20 .

([a-zA-Z0-9]+([\\s][a-zA-Z0-9]+)*){0,20} .

这不允许在启动时使用空格,但不检查最大尺寸条件 . 如何更改此正则表达式?

3 回答

  • 3

    您指定整个模式的20次重复 . 我猜你可能意味着什么

    [a-zA-Z0-9][\\sa-zA-Z0-9]{0,19}
    

    如果应该允许空输入,请将整个内容包装在 (...)? 中 .

  • 5

    各种各样的方法来编写这个,因为你使用Java,为什么不使用Java正则表达式“功能”? :d

    String regexString = "(?<!\\s+)[\\w\\s&&[^_]]{0,20}";
    

    细分,这说:

    (?<!\\s+)  # not following one or more whitespace characters,
    [          # match one of the following:
      \\w      # word character (`a-z`, `A-Z`, `0-9`, and `_`)
      \\s      # whitespace characters
      &&[^_]   # EXCEPT FOR `_`
    ]          # 
    {0,20}     # between 0 and 20 times
    

    它将匹配 a-zA-Z0-9 和空格,即使\ w否则会包含下划线,那里的额外部分不会显示下划线 - 我认为它是Java独有的......无论如何,这很有趣!

  • 0

    正则表达式如下:

    boolean foundMatch = subjectString.matches("(?i)^(?=.{1,20}$)[a-z0-9]+(?:\\s[a-z0-9]+)*$");
    

    将匹配一个1到20个字符的字符串,以字母数字字符开头,后跟单个空格和更多的字母数字字符 . 请注意,字符串必须以字母数字字符结尾,而不是空格 .

相关问题