regex 包含A-Z a-z 0-9撇号'和破折号-的名称验证正则表达式

vawmfj5a  于 2023-04-22  发布在  其他
关注(0)|答案(1)|浏览(165)

我正在尝试验证包含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\'\-]+)+$
u3r8eeie

u3r8eeie1#

你可以用

^(?!(?:[ '-]?\d)+$)[A-Za-z0-9]+(?:[ '-][A-Za-z0-9]+)*$

参见regex demo

  • 详情 *:
  • ^-字符串的开头
  • (?!(?:[ '-]?\d)+$)-如果有一个或多个重复的可选空格/'/-,然后是一个数字,直到字符串结束,则匹配失败的负向前看
  • [A-Za-z0-9]+-一个或多个ASCII字母/数字
  • (?:[ '-][A-Za-z0-9]+)*-空格/'/-和一个或多个ASCII字母/数字的零次或多次重复
  • $-字符串结束。

相关问题