正则表达式:^[a-zA-Z]+(?:[\\s'.-]*[a-zA-Z]+)*$
我想在上面添加另一个验证,即最少3个字符,最多15个字符。
正则表达式:^([a-zA-Z]+(?:[\\s'.-]*[a-zA-Z]+)*){3,28}$
这对最小字符有效,但对最大字符无效。
感谢您的帮助。
答案 0 :(得分:3)
您可以使用正向前瞻(?=.{3,15}$
来检查字符串是否具有3到15个字符的长度。
因为字符串的最小长度为3,并且必须以a-zA-Z开头和结尾,所以在这种情况下,您可以在中间组合两个字符类。
我认为,由于积极的前瞻性,可以通过删除组的重复来简化您的模式:
^(?=.{3,15}$)[a-zA-Z]+[\\s'.a-zA-Z-]*[a-zA-Z]+$
说明
^
字符串的开头(?=.{3,15}$)
肯定会提前表示3-15岁的长度[a-zA-Z]+
匹配1+次小写字母a-z [\\s'.a-zA-Z-]*
Charater类可以匹配列出的0次以上的任何时间[a-zA-Z]+
匹配1+次小写字母a-z $
字符串的结尾请参见Java demo