我正在使用一个简单的Javascript正则表达式来验证人们的姓名。但是,我不想让用户输入重音字符,例如ã
,ä
,õ
,ö
等。我知道这些字符实际上可以有效名字中的字符,但对于我的练习,我需要能够过滤掉它们。
我当前的正则表达式:
^[a-zA-Z]+('|-|.|)[a-zA-Z\s]+$
这也匹配重音字符。如何修改此正则表达式,使其与带重音的名称(或任何Unicode字符)不匹配?
答案 0 :(得分:2)
删除.
,因为.
匹配任何字符。这可能会导致匹配的重音字符。
^[a-zA-Z]+('|-)[a-zA-Z\s]+$
如果你的意思是字面点,请或转义.
。
^[a-zA-Z]+('|-|\.)[a-zA-Z\s]+$
答案 1 :(得分:1)
要匹配单个字符,最好使用类[...]
,而不是使用替代(...|...)
的组:
^[a-zA-Z]+['.-][a-zA-Z\s]+$
请注意,这不是100%准确,因为它会验证foo.bar
等等。