正则表达式为欧洲名称

ale*_*ngn 2 php regex

我正在寻找一个欧洲名字的正则表达式.我找到了这个,用javascript工作得很好:

/^([ \u00c0-\u01ffa-zA-Z'\-])+$/
Run Code Online (Sandbox Code Playgroud)

我将它转换为PHP,但它不起作用:

/^([ \x{00C0}-\x{01FF}a-zA-Z'\-])+$/
Run Code Online (Sandbox Code Playgroud)

我的正则表达式必须与这样的名称匹配:

Jean-Paul le Marchant

JérômeL'activé

所以字符a-zA-Z,没有像@#$%^©等特殊字符,但所有重音/欧洲字符如éèàôç等.

Mar*_*der 5

您需要激活Unicode模式才能使这些转义序列起作用:

/^([ \x{00C0}-\x{01FF}a-zA-Z'\-])+$/u
Run Code Online (Sandbox Code Playgroud)

请注意,括号不是必需的:

/^[ \x{00C0}-\x{01FF}a-zA-Z'\-]+$/u
Run Code Online (Sandbox Code Playgroud)

字符类提供正则表达式的单个"元素",可以立即使用量词重复.