You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何编写正则匹配首尾为相同中文(测试)中间含非中文字符的字符串

正则匹配方案

适用支持Unicode属性的正则引擎(Python3/Java/ES2018+ JS/Go等)

直接使用如下正则即可:
^测试[^\p{Han}]*测试$
各部分规则说明:

  • ^:限定匹配字符串的起始位置
  • 开头的测试:固定匹配开头的指定中文字符
  • [^\p{Han}]*:匹配0个或任意数量的非中文字符,其中\p{Han}是Unicode属性标识符,指代所有中文字符,字符组开头的^代表取反
  • 结尾的测试:固定匹配结尾的指定中文字符
  • $:限定匹配字符串的结束位置

适用不支持Unicode属性的旧版正则引擎(如低版本JS等)

可以用常用简体中文字符范围替代\p{Han}:
^测试[^\u4e00-\u9fa5]*测试$
其中\u4e00-\u9fa5覆盖了绝大多数常用简体、繁体中文字符,可满足大部分场景需求。

验证效果

  • 匹配通过示例:测试1003##$%#测试 完全符合规则可匹配
  • 匹配不通过示例:测试123中文测试 中间存在中文字符,无法匹配

你之前提到的负向预查写法^((?!(\p{Han}).)*$是用来匹配全字符串无中文字符的场景,本需求无需使用复杂度更高的负向预查,直接用反向字符组即可实现,性能更优。

内容的提问来源于stack exchange,提问作者Rocket

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 14:36:05