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

时间:2011-10-19 19:17:18

标签: java regex

正则表达式,仅允许字母和数字以及空格仅在最大大小为 20 的字母之间。

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

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

3 个答案:

答案 0 :(得分:5)

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

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

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

答案 1 :(得分:3)

所有编写此方法的方法,并且由于您使用的是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 ...反正,这很有趣!

答案 2 :(得分:0)

下面的正则表达式:

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

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