火狐浏览器无效的正则表达式组

21

我有以下正则表达式,在中可以正常工作,但在Firefox中无法正常工作,并生成语法错误无效的Regex组

bld = txt.split(/(?<=:)/iu,1);

我尝试使用/(?<=\:)/iu来转义冒号,但是它仍然出现了相同的错误。我无法弄清楚问题的原因。

我已经尝试过转义 :,但是出现了相同的错误。我无法找出问题的原因。


1
所以,如果你有 '1:2:3',你想得到 1: 吗?那么你可以使用 s.match(/^[^:]*:/)。这个问题的原因很简单也很出名:JS RegExp 直到最近版本的 Chrome 才支持后行断言。 - Wiktor Stribiżew
是的,或者说如果我有错误5:lorem lipsum:in...,我需要得到错误5: - SaidbakR
如果你想进行匹配,为什么不使用match呢? - apple apple
@WiktorStribiżew 嗯,您的建议使用 match 很好,但是使用 split 不起作用。此外,我需要了解在 FireFox 中我的正则表达式和分割出现了什么问题? - SaidbakR
1
@SaidbakR FF RegExp 版本不支持后顾断言。我已经解释过了。你也不能使用 split - Wiktor Stribiżew
1个回答

21

如您在这里所见,截至目前,不是所有浏览器/JavaScript环境都支持向后查找。因此,如果要支持包括旧版本在内的所有浏览器,则不能依赖该功能。

由于您只想匹配字符串中除:和第一个:之外的0个或多个字符,因此可以使用以下代码:

s.match(/^[^:]*:/)

看看正则表达式演示

JS:

console.log(
 'Error 5: the lorem lipsum: in...'.match(/^[^:]*:/)[0]
);


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接