0

我正在尝试构建一个与 PHP 兼容的正则表达式,它允许重音字符,例如“ü”。据我了解, \p{L} 运营商应该这样做。到目前为止我所拥有的:

/^[a-z0-9\p{L}][a-z0-9_\p{L}]*/i

这应该允许一个字符串可以以任何 az、0-9 和重音字符开头,然后可以跟任意数量的 az、0-9 和重音字符,并且整个表达式不区分大小写。

但是在测试中,当在字符串中的任何位置使用诸如“ü”之类的字符时,验证会失败。我已通过以下方式确保传递的值是用 utf8 编码的:

utf8_encode($value)

然而它仍然失败。有什么建议么?

提前致谢

- - - - - - - - - - - - -编辑 - - - - - - - - - - - - -

在另一台服务器上测试后,原始模式也有效。

/^[a-z0-9\p{L}][a-z0-9_\p{L}]*/i

问题似乎与服务器设置有关。找到后我会发布解决方案。

4

1 回答 1

1

我认为这可能对你有用:

$pattern =  '/^[0-9a-zá-úàü][0-9_a-zá-úàü]*$/i';

我运行以下代码来测试模式:

$str = "patinação";
$pattern =  '/^[0-9a-zá-úàü][0-9_a-zá-úàü]*$/i';
if (preg_match($pattern, $str, $matches)){
    echo $matches[0];//output: patinação
}
于 2013-07-05T16:25:15.157 回答