我想要一个正则表达式来测试短语是否是正确的名称。它应该是:/^[\w\s\.]+$/
问题在于上面的正则表达式与“NoëlBurch”之类的名称不匹配,因为它包含'ë'字符。另一方面,我不能使用/^[\D]+$/
,因为它会匹配“这是%而不是*名称”之类的短语。
是否有一个简单的正则表达式可以匹配常见的欧洲名称?
答案 0 :(得分:2)
您可以检查以大写字母开头的通用词。所以名字为
someName = "Nicklos Frappapapopadopolos";
您可以使用正则表达式^\p{Lu}{1}\p{Ll}+\s+\p{Lu}{1}\p{Ll}+$
,它假设只有第一个和第二个名称,并且每个名称都以大写字母开头。
但是,我不确定\p{Ll}
是否适用于欧洲字符。
编辑:在得出正则表达式部分\p{Ll}
与欧洲匹配之后,您现在可以扩展任意长名称的正则表达式,例如
someOtherNameI = "Victor PickPockaDopolas The Third"
与此匹配的ragex类似于^(\s?\p{Lu}\p{Ll}+\s?)+$
。这匹配上述但不是
someOtherNameII = "Victor PickPockaDopolas The third"
这可能或许可能不是另一个问题。
答案 1 :(得分:2)
尝试执行以下操作:
^[\w{list of characters}\s.]+$
所以基本上,如果你有Emily Brontë
这样的东西,应该只返回以下修改。
^[\w{ë}\s.]+$
如果您知道特定的语言环境,并且您的正则表达式支持语言环境,您应该能够将它们传入。通常传入UNICODE指令是这样的:
^[\w{L}\s.]+$
或
^[\w{UNICODE}\s.]+$
话虽这么说,使用\w
仍然允许传入数字。这是否适用于您的情况?我的意思是Chad 85
,他的名字是Chad Ochocinco
。
答案 2 :(得分:1)
考虑到名称中涉及的所有特殊字母,您可能最好检查不应出现的字符,如果他们误解了表单,人们可能会使用。这些将是:
- 数字
- 常见的标点符号:_ @ ,; :< > | + * /()[]! ? “#