我正在尝试验证包含A-Z a-z 0-9撇号、破折号和空格的名称。
0-9撇号、破折号-和空格是可选的,但不应该只允许这些可选的东西而不允许任何字母。
For example, these should all match:
Jean-Paul
O'Donnel
Jay-Z
2Pac
Name with number in it like-> 50 Cent
Name with hyphen and number-> Rob2 ben-den1
Following should not match:
-'2571 (only 0-9 apostrophe ' dash - and space)
Empty String
56757 (only number)
我已经使用了正则表达式,但它并不适用于上述所有情况:
^[A-Za-z0-9][A-Za-z0-9\'\-]+([\ A-Za-z0-9][A-Za-z0-9\'\-]+)+$
1条答案
按热度按时间u3r8eeie1#
你可以用
参见regex demo。
^
-字符串的开头(?!(?:[ '-]?\d)+$)
-如果有一个或多个重复的可选空格/'
/-
,然后是一个数字,直到字符串结束,则匹配失败的负向前看[A-Za-z0-9]+
-一个或多个ASCII字母/数字(?:[ '-][A-Za-z0-9]+)*
-空格/'
/-
和一个或多个ASCII字母/数字的零次或多次重复$
-字符串结束。