php正则匹配结果和在线工具调试结果差异巨大 求指点

TIM截图20200323060754.jpg

我使用多个在线表达式测试工具
都如上图所示 可以匹配到我设想的结果
下面是正则部分

[^\u4e00-\u9fa5]?[\u4e00-\u9fa5]+(\s?|\s+)(http)?[^@\s\u4e00-\u9fa5]+\.[^\s\u4e00-\u9fa5]+

但是放到php当中执行
同样的文本 却匹配不到任何文本 如下图
代码部分:
TIM截图20200323060323.jpg
执行结果:
TIM截图20200323060334.jpg

非常费解,也换了几个模式修饰符测试,也是毫无结果
超出了自己的理解范围能力
前来求教
我使用的环境是win10 ltsc 1803
php版本为

    PHP 7.4.4 (cli) (built: Mar 17 2020 13:49:13) ( NTS Visual C++ 2017 x64 )
    Copyright (c) The PHP Group
    Zend Engine v3.4.0, Copyright (c) Zend Technologies
    with Xdebug v2.9.3, Copyright (c) 2002-2020, by Derick Rethans
阅读 1.5k
1 个回答

自问自答一下
问题出在

php不支持常见的中文正则表达式

[\u4e00-\u9fa5]

必须使用 如下部分

/[\x{4e00}-\x{9fa5}]/u

注意 后边的/u 同样重要

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题