我想创建一个正则表达式,可以匹配包含空格和破折号的姓氏,例如:
Smith-Wright
Smith
Smith Wright
但如果你只输入-或空格,它不应该起作用。目前我有一个正则表达式,如 ^[a-zA-Z\s\-]+$
,但它只检查带有-和空格的单词。如何创建正则表达式,以匹配只含我的分隔符的单词?
^[a-zA-Z]+(?:[ -][a-zA-Z]+)*$
解释:
^
- 字符串的开头[a-zA-Z]+
- 匹配一个由字母组成的名称,其中包含一个或多个字符(?:[ -][a-zA-Z]+)*
- 另外匹配更多的名称部分,只要它是以空格或连字符分隔的即可。$
- 字符串的结尾^[a-zA-Z]+([ -][a-zA-Z]+)*$
[ -]
的位置。
Smith
,只需将最后一个+
改为*
演示,这将使后面的部分变成零个或多个,因此是可选的。 - Pushpesh Kumar Rajwanshi