棘手的正则表达式验证

时间:2014-09-29 18:39:30

标签: regex

我需要验证带有2个组的字符串,这些组用下一个规则用一个空格分隔:

  • 每组需要至少2个字符长但小于或等于15

  • 两个小组在一起的时间不超过20个字符(不计算空格)

  • 群组只能包含字母(简单,它是[a-zA-Z])

遵循这些规则,这里有一些例子

  • 名字姓氏(有效)

  • Somename T(无效,第二名是< 2)

  • Somethingsomettt Here(无效,第一个是> 15)

  • Somethingsome Somethingsome(无效,总计> 20)

如果不是2 + 2< = total< = 20条件,那就简单[a-zA-Z]{2,15} [a-zA-Z]{2,15}

甚至可以用这种方式限制吗?如果是 - 怎么样?

更新 只是为了它,结果正则表达式应该是^(?=[a-zA-Z ]{5,21}$)[a-zA-z]{2,15} [a-zA-Z]{2,15}$,@ vks最接近它。不过,还要感谢@popovitsj和@Avinash Raj。

3 个答案:

答案 0 :(得分:1)

您可以尝试使用负前瞻的下面的正则表达式

(?!^.{22,})^[a-zA-Z]{2,15} [a-zA-Z]{2,15}$

DEMO

答案 1 :(得分:1)

这可以通过前瞻来完成。像这样:

^(?=.{1,20}$)[a-zA-z]{2,14} [a-zA-Z]{2,14}$

答案 2 :(得分:1)

^(?=.{5,21}$)[a-zA-Z]{2,15} [a-zA-Z]{2,15}$

试试这个。看看演示。

http://regex101.com/r/nA6hN9/30