我正在寻找欧洲名称的正则表达式。 我找到了这个,用javascript工作得很好:
/^([ \u00c0-\u01ffa-zA-Z'\-])+$/
我将其转换为PHP,但它不起作用:
/^([ \x{00C0}-\x{01FF}a-zA-Z'\-])+$/
我的正则表达式必须与名称匹配:
Jean-Paul le Marchant
JérômeL'activé
所以字符a-zA-Z,没有特别的字符,如@#$%^©等,但所有重音/欧洲字符,如éèàôç等。
答案 0 :(得分:5)
您需要激活Unicode模式才能使这些转义序列生效:
/^([ \x{00C0}-\x{01FF}a-zA-Z'\-])+$/u
请注意,括号不是必需的:
/^[ \x{00C0}-\x{01FF}a-zA-Z'\-]+$/u
字符类提供正则表达式的单个“元素”,可以立即使用量词重复。
答案 1 :(得分:0)
确保使用utf8编码,然后在正则表达式上拍打u
修饰符:
$regex = '/^([ \x{00C0}-\x{01FF}a-zA-Z\'\-])+$/u';
答案 2 :(得分:0)
这个PHP正则表达式应该可以工作:
$str = "Jérôme L'activé";
if (preg_match("/^[\s\x{00C0}-\x{01FF}a-z'-]+$/iu", $str, $match))
print_r($match);
<强>输出:强>
Array
(
[0] => Jérôme L'activé
)
RegEx Flags
PS:在方括号内,如果它位于第一个或最后一个位置,则无需转义连字符-
。