JavaScript正则无负向后顾匹配非转义$包裹字符串的兼容实现
JavaScript 跨环境兼容的
$分隔字符串匹配需求说明 匹配规则明细
- 可定位文本任意位置的目标内容,完整捕获被两个未转义
$符号包裹的字符串,匹配结果包含两端的$分隔符,例如$ test string $可被完整识别匹配 - 严格遵循转义逻辑:被反斜杠转义为
\$的符号不能作为匹配边界,例如文本The price is 5\$ to 10\$中的两个转义$,不会触发任何匹配逻辑
现存方案的兼容问题
- 可完美符合上述匹配规则的参考正则为:
(?<!\\)\$(.*?)(?<!\\)\$ - 该参考正则依赖负向后顾断言语法,而Safari等特定JavaScript运行环境不支持该语法,导致参考方案无法在对应环境正常生效
- 目前可实现部分匹配效果的替代方案存在逻辑缺陷,会错误将
$符号前的非反斜杠字符纳入匹配结果,无法达到精准匹配的标准
待实现要求
完全规避负向后顾语法,实现与参考正则等价的匹配效果,兼容所有不支持负向后顾的JavaScript运行环境。
内容的提问来源于stack exchange,提问作者creativecreatorormaybenot
相关产品推荐
相关产品推荐

