假设我有这三个名字
John Doe (p45643)
Le'anne Frank
Molly-Mae Edwards
我想比赛 1)约翰·杜 2)Le'anne弗兰克 3)莫莉·梅·爱德华兹
我尝试过的正则表达式是
(^[a-zA-Z-'^\d]$)+
但是它没有按我期望的那样工作。
我想帮助创建一个正则表达式模式,
从头到尾匹配一个名称,并且不能包含数字。每个“名称”可以包含的唯一允许值为[a-zA-Z'-],因此,如果名称为
J0hn
则不匹配
答案 0 :(得分:1)
如果我正确理解了您的问题,则您的正则表达式中有一个小错误:
(^[a-zA-Z-'^\d]$)+
^-------^------Here
上面指出的-
应该作为范围字符而转义或移至末尾。 +
将该群组标记为重复。
您可以改用此正则表达式(遵循以前的模式):
(^[a-zA-Z'^\d -]+$)
更新:发表评论。如果要单独匹配,则可以使用:
(\b[a-zA-Z'^\d-]+\b)
如果只想匹配字符串(而不是数字),则可以使用:
(\b[a-zA-Z'-]+\b)
答案 1 :(得分:0)
您使用的锚点不正确。基于修饰符,它可以匹配整个字符串或一行。 试试
/^[a-zA-Z'-]+$/
答案 2 :(得分:0)
感谢@Djory Krache
我正在寻找的查询是
(\b[a-zA-Z'-]+\b)