我有一个文本框,我可以在其中获取用户的姓氏。如何在正则表达式中只允许一个连字符 (-)?
^([a-z A-Z]*-){1}[a-z A-Z]*$
您的正则表达式恰好允许一个-
. 但我假设您想要匹配“Smith”、“Smith-Kennedy”,而不是“Smith-”,为此您只需将连字符移动到第二组:
^[a-z A-Z]+(-[a-z A-Z]+)?$
顺便说一句,几乎在所有情况下,什么时候*
使用+
是更好的解决方案。
如果匹配.*-.*-
,则您有多个连字符,不应接受这样的字符串
您的正则表达式的一个问题是它强制用户将-
. 您可以使用?
使其成为可选:
^[a-z A-Z]*\-?[a-zA-Z]*$