正则表达式中的字符范围

时间:2019-01-29 12:46:52

标签: java regex

正则表达式:^[a-zA-Z]+(?:[\\s'.-]*[a-zA-Z]+)*$

我想在上面添加另一个验证,即最少3个字符,最多15个字符。

正则表达式:^([a-zA-Z]+(?:[\\s'.-]*[a-zA-Z]+)*){3,28}$

这对最小字符有效,但对最大字符无效。

感谢您的帮助。

1 个答案:

答案 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