我有以下要求:
匹配所有Unicode字符。(非特定罗马字符)
最大字符数为255。
不接受数字字符。
我已经为此编写了以下代码和正则表达式。它完美适用于ASCII字符并满足上述所有要求,但在使用罗马字符时失败。
请告诉我错误的地方。
<?php
$text = "ăâáéíîó";
$pattern = "/^[p{L}p{M}*+]{1,255}$/";
$ret = preg_match($pattern,$text,$match);
echo "Return Value = $ret";
echo "<pre>";
print_r($match);
?>
输出:
Return Value = 0
Array
(
)
答案 0 :(得分:1)
您需要添加以下修复程序:
\
- \p{L}
,\p{M}
定义。/u
修饰符。使用
$pattern = "/^(?:\p{L}\p{M}*+){1,255}$/u";
请参阅PHP demo