繁体   English   中英

preg_match不是Unicode正则表达式的验证罗马字符

[英]preg_match is not validation roman character for Unicode regular expression

我有以下要求:

  • 匹配所有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
(
)

您需要添加以下修复程序:

  • 类别类别将使用\\ - \\p{L}\\p{M}
  • 具有变音符号的字母应分组在分组构造中,而不是char类中
  • 处理Unicode时,需要/u修饰符。

采用

$pattern = "/^(?:\p{L}\p{M}*+){1,255}$/u"; 

参见PHP演示

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM