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

如何编写匹配行首任意顺序包含B、R、A、S四个字符的正则表达式

符合要求的正则表达式

正确的正则写法如下:

^(?=.{0,3}B)(?=.{0,3}R)(?=.{0,3}A)(?=.{0,3}S).*$

逻辑说明

你之前尝试的正则问题出在正向预查的扫描范围没有做限制,会扫描整行内容,只要整行中出现B、R、A、S四个字符就会匹配,不符合「四个字符必须出现在行首前四位」的要求:

  • 每个(?=.{0,3}X)的作用是限定字符X必须出现在行首前4个字符范围内:.匹配任意单个字符,{0,3}表示最多匹配3次,加上当前行首位置,总扫描范围正好是前4个字符
  • 四个正向预查分别校验B、R、A、S四个字符均出现在行首前四位
  • 末尾的.*匹配该行剩余的所有内容

如果你额外要求行首前四位只能由B/R/A/S四个字符组成(不允许插入其他字符),可以使用这个变体:

^(?=[BRAS]{4})(?=.*B)(?=.*R)(?=.*A)(?=.*S).*$

匹配效果验证

对给出的示例文本匹配结果如下:

  • 匹配行:BRASIL、BSRAIL、BARSILERO、BRASILERA、BRASILEÑA、BRASILEÑO
  • 不匹配行:BARBADOS(前四位无S)、BOSNIA AND HERZEGOVINA(前四位无R、A)
    完全符合预期要求。

内容的提问来源于stack exchange,提问作者Coder-M

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 07:24:01