首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Unicode正则表达式- 343个字符时失败

问Unicode正则表达式- 343个字符时失败
EN

Stack Overflow用户
提问于 2010-07-05 09:30:02
回答 1查看 269关注 0票数 1

我使用下面的正则表达式来剔除任何非拉丁字符。结果,我发现如果我使用一个超过342个字符的字符串,函数就会失败,所有东西都会中止,网站连接也会被重置。

我将其范围缩小到\p{P} unicode字符属性,它可以匹配任何标点符号。

有没有人确切地知道/看到问题出在哪里?

preg_match('/^([\p{P}\p{S}&\p{Latin}0-9]|\s)*$/u', 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa');

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-07-05 10:55:18

如果你要“剔除”非拉丁字符,为什么不这样做:

代码语言:javascript
复制
preg_replace('/[^\p{Latin}]+/u', '', $s)

编辑:好的,所以你正在尝试验证输入。我想说的是,用这个:

代码语言:javascript
复制
preg_match('/^[\p{Latin}]+$/u', $s)

...but结果是只匹配拉丁字母。我在想Java没有文档记录的速记,\p{L1},它匹配Latin1 (ISO-8859-1)字符集的所有内容,但在PHP语言中,您必须拼写出来:

代码语言:javascript
复制
preg_match('/^[\x00-\xFF]+$/u', $s)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3176825

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档