如何将模式与连字符或撇号匹配

时间:2016-05-06 09:09:07

标签: regex

我正在尝试编写一个正则表达式来接受名称,如果它包含a-z A-Z,但是某些名称可能包含连字符或撇号。到目前为止,我有这个,它不匹配任何东西:

(^[a-zA-Z]['][-]$)

2 个答案:

答案 0 :(得分:2)

您的正则表达式^[a-zA-Z]['][-]$与后跟'-的字母相匹配。类似于a'-

您需要添加量词和可选组(*将允许0次或更多次出现),例如

^[a-zA-Z]+(?:['-][a-zA-Z]+)*$
         ^^^^^^^^^^^^^^^^^^^

请参阅regex demo

Regular expression visualization

Debuggex Demo

模式锚定整个匹配(它应匹配整个字符串),它匹配一个或多个字母([a-zA-Z]+),然后 0或更多次出现 {{1} }或'(感谢-)后跟1+个字母。

答案 1 :(得分:1)

请改用:

^[a-zA-Z'-]+$

Demo

Visualization