正则表达式,仅允许字母和数字以及空格仅在最大大小为 20 的字母之间。
([a-zA-Z0-9]+([\\s][a-zA-Z0-9]+)*){0,20}
。
启动时不允许使用空格,但不检查最大尺寸条件。如何更改此正则表达式?
答案 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-z
,A-Z
,0-9
和空格,即使\ w否则会包含下划线,那里的额外部分不会显示下划线 - 我认为它是唯一的到Java ...反正,这很有趣!
答案 2 :(得分:0)
下面的正则表达式:
boolean foundMatch = subjectString.matches("(?i)^(?=.{1,20}$)[a-z0-9]+(?:\\s[a-z0-9]+)*$");
将匹配1到20个字符的字符串,以字母数字字符开头,后跟单个空格和更多字母数字字符。请注意,字符串必须以字母数字字符结尾,而不是空格。