猿问

正则表达式刚刚在 Bluehost 上崩溃

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


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


米脂
浏览 105回答 2
2回答

HUX布斯

您不能拥有具有 unicode 属性的范围,错误来自\pL和之间的连字符0。PCRE 的某些实现接受它作为连字符,而其他一些则不接受。只需将其删除,或者,如果要匹配连字符,请将其转义或将其放在字符类的开头或结尾:[.\pL0-9'\s]或者[.\pL\-0-9'\s]或者[-.\pL0-9'\s]或者[.\pL0-9'\s-]

温温酱

一个猜测(是的,在 7.3.11 中得到证实)是L-0-9失败的部分。第一个连字符是否意味着被视为文字连字符?如果是这样,请逃脱它。如果不是,你想匹配什么?
随时随地看视频慕课网APP
我要回答