我需要正则表达式方面的帮助。我的字符串包含 unicode 字符,下面的代码不起作用。
前四个字符必须是数字,然后是逗号,然后是任何字母字符或空格... 我已经读到如果我在正则表达式的末尾添加/u 但它对我不起作用...
我的代码适用于非 unicode 字符
$post = '9999,škofja loka';;
echo preg_match('/^[0-9]{4},[\s]*[a-zA-Z]+', $post);
感谢您的回答!
最佳答案
更新后的答案:
现在已经过测试并且可以正常工作
$post = '9999, škofja loka';
echo preg_match('/^\\d{4},[\\s\\p{L}]+$/u', $post);
\\w
将不起作用,因为它不包含所有 unicode 字母并且还包含 [0-9_]
除了字母之外。
激活 unicode 模式的 u
修饰符也很重要。
如果逗号后可以有字母 或 空格,那么你应该把它们放在同一个字符类中,在你的正则表达式中,逗号后有 0 个或更多空格,然后只有字母。
参见 http://www.regular-expressions.info/php.html获取 php 正则表达式的详细信息
\\p{L}
(Unicode字母)解释here
使用字符串结尾边界 $
也很重要,以确保确实验证了完整的字符串,否则它将仅匹配第一个空格而忽略其余部分。
关于php - PHP 正则表达式中的 UTF-8,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6407983/