Firefox中的正则表达式令人反感

时间:2019-03-29 04:24:41

标签: javascript regex firefox negative-lookbehind

我正在使用此正则表达式/(?<=^| )\d+(\.\d+)?(?=$| )/,该正则表达式包含一个积极的含义,但似乎无法在Firefox中使用,并且出现异常。有什么替代方法?

1 个答案:

答案 0 :(得分:0)

您可以在一个未捕获的(?:^| )组中将正向后移保持交替。

然后将您的值捕获到捕获组(\d+(?:\.\d+)?)中,并将可选的小数部分也转换为非捕获组。支持正向前瞻,因此您可以保持原样。

(?:^| )(\d+(?:\.\d+)?)(?=$| )

Regex demo

let strings = [
  "1",
  "1.2 ",
  "0",
  "0.122",
  " 1",
  " 1.2",
  " 0",
  " 0.122",
];
let pattern = /(?:^| )(\d+(?:\.\d+)?)(?=$| )/;
strings.forEach(s => {
  console.log(s.match(pattern)[1])
});