我使用以下正则表达式来允许来自任何语言、数字、下划线和空格的字母。
^[\p{L}0-9 _]\*[\p{L}0-9][\p{L}0-9 _]\*$它在在线regex测试工具中非常好,但在我的PHP代码中却不行。例如,它将不与任何俄语单词"Привет“相匹配。
知道为什么吗?
PHP版本:PHP7.1.16
发布于 2019-04-25 03:39:54
你的判决有几个问题。首先,它将只匹配3个字符,而不添加一个*或+后的字符集。其次,要在PHP中匹配unicode,需要在regex上使用u 修饰符。试一试:
$str = 'Привет';
$regex = '/^[\p{L}0-9 _][\p{L}0-9]+[\p{L}0-9 _]$/u';
echo preg_match($regex, $str);输出:
1https://stackoverflow.com/questions/55841422
复制相似问题