Regex刚在Bluehost上崩溃了

问题描述 投票:0回答:2

这是我的错误,似乎与服务器升级有关。

preg_match(): Compilation failed: invalid range in character class 

// The regex that did not compile
return preg_match("/^[\.\pL-0-9'\s]+$/u", $value);

我看不到问题,也没有找到清晰的文档,现在可能需要转义其上的字符。

PCRE (Perl Compatible Regular Expressions) Support => enabled
PCRE Library Version => 10.32 2018-09-10
PCRE Unicode Version => 11.0.0

php 7.3.17
php regex preg-match pcre
2个回答
0
投票
猜测(是的,是,在7.3.11中得到确认)是L-0-9部分出了故障。

第一个连字符是否应被视为文字连字符?如果是这样,请对其进行转义。

如果没有,您要匹配什么?


0
投票
您不能具有具有Unicode属性的范围,该错误来自\pL0之间的连字符。 PCRE的某些实现将其作为连字符接受,而另一些则不接受。

只需将其删除,或者,如果要匹配连字符,请将其转义或将其放在字符类的开头或结尾:

[.\pL0-9'\s]

[.\pL\-0-9'\s]

[-.\pL0-9'\s]

[.\pL0-9'\s-]

© www.soinside.com 2019 - 2024. All rights reserved.