我有一个非常具体的要求检查(在名称字段上),但不知道如何生成所需的正则表达式。
要求如下:
基于此,以下字符串应该得到定义的结果:
成功:
Bartholomew Jamieson-Smithson-West
Mellisa Wu
Li Smith
故障
Andy Bartholomew-Jamieson-Smithson-West
L Bartholomew-Jamieson-Smithson-Wu
答案 0 :(得分:0)
您可以使用以下正则表达式执行此操作:
/^(?!.{36,})[a-z'-]{2,}\s[a-z'-]{2,}/gmi
匹配符合以下条件的字符串:
^(?!.{36,})
不是36个字符或更长[a-z'-]{2,}
以仅包含" a"的单词开头。 - " z","'"和" - " \s
后面跟一个空格[a-z'-]{2,}
后跟2中描述的词。但是,您应该指定以下标志:gmi
:
g
获取所有匹配项,而不仅仅是第一个m
单独对待i
匹配没有大小写敏感性,因为这不是一个要求,并且会夸大表达式;)答案 1 :(得分:0)
试试这个:
/(?=^[A-Za-z-' ]{1,35}$)(?=.*[a-z-']{2,}\s.*[a-z-']{2,}).*/gmi
(?=^[A-Za-z-' ]{1,35}$)
正面检查长度小于36。如果匹配的话,
(?=.*\w{2,}\s.*\w{2,})
正向前检查两个字是否存在超过2个字符。
如果匹配则 .*
- >匹配整个字符串