php - PHP 正则表达式中的 UTF-8

标签 php regex utf-8

我需要正则表达式方面的帮助。我的字符串包含 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/

相关文章:

json - 无法将特殊字符发布到对话流查询中

python - 如何从 stdin 读取输入并强制执行编码?

javascript - 如何使用正则表达式验证 UPI ID?

php - 将 ISO 8601 转换为 unix 时间戳

php - 我如何集成指纹扫描设备javascript

PHP 脚本仅将 5000 行插入 phpMyAdmin 数据库

java - 具有异常 unicode 字符和单词边界的正则表达式模式

regex - 使用正则表达式仅提取全部大写单词

Python 统一码 UnicodeEncodeError

php - PDO 两表连接