我正在尝试在Javascript中编写正则表达式以匹配名称字段,其中唯一允许的值是字母,撇号和连字符。例如,应匹配以下名称:
jhon's
avat-ar
Josh
有人可以帮我构建一个这样的正则表达式吗?
答案 0 :(得分:9)
是
^[a-zA-Z'-]+$
在这里,
^
表示字符串的开头,$
表示字符串的结尾。[…]
是一个字符类,其中的任何内容都将匹配。x+
表示在重复一次或多次之前的模式。在角色类中,
a-z
和A-Z
是小写和大写字母,'
是撇号,-
是连字符。连字符必须出现在开头或结尾,以避免与范围分隔符混淆,如a-z
中所示。请注意,此课程不会与国际字符匹配,例如一个。你必须单独包括它们,例如
^[-'a-zA-ZÀ-ÖØ-öø-ſ]+$
答案 1 :(得分:1)
UTF-8世界的紧凑版本,与国际字母和数字相匹配。
/^[\p{L}\p{N}*-]+$/u
说明:
请注意,如果连字符是类定义中的最后一个字符,则不需要转义。如果短划线出现在类定义的其他位置,则需要进行转义,因为它将被视为范围字符,而不是连字符。
答案 2 :(得分:0)
更紧凑的版本是[\w'-]+