一个正则表达式,仅允许字母表中的字母和数字以及空格,最大大小为 20 .
([a-zA-Z0-9]+([\\s][a-zA-Z0-9]+)*){0,20} .
([a-zA-Z0-9]+([\\s][a-zA-Z0-9]+)*){0,20}
这不允许在启动时使用空格,但不检查最大尺寸条件 . 如何更改此正则表达式?
您指定整个模式的20次重复 . 我猜你可能意味着什么
[a-zA-Z0-9][\\sa-zA-Z0-9]{0,19}
如果应该允许空输入,请将整个内容包装在 (...)? 中 .
(...)?
各种各样的方法来编写这个,因为你使用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独有的......无论如何,这很有趣!
a-z
A-Z
0-9
正则表达式如下:
boolean foundMatch = subjectString.matches("(?i)^(?=.{1,20}$)[a-z0-9]+(?:\\s[a-z0-9]+)*$");
将匹配一个1到20个字符的字符串,以字母数字字符开头,后跟单个空格和更多的字母数字字符 . 请注意,字符串必须以字母数字字符结尾,而不是空格 .
3 回答
您指定整个模式的20次重复 . 我猜你可能意味着什么
如果应该允许空输入,请将整个内容包装在
(...)?
中 .各种各样的方法来编写这个,因为你使用Java,为什么不使用Java正则表达式“功能”? :d
细分,这说:
它将匹配
a-z
,A-Z
,0-9
和空格,即使\ w否则会包含下划线,那里的额外部分不会显示下划线 - 我认为它是Java独有的......无论如何,这很有趣!正则表达式如下:
将匹配一个1到20个字符的字符串,以字母数字字符开头,后跟单个空格和更多的字母数字字符 . 请注意,字符串必须以字母数字字符结尾,而不是空格 .