首页 > 解决方案 > Firefox 正则表达式的正则表达式

问题描述

我正在使用这个正则表达式/(?<=^| )\d+(\.\d+)?(?=$| )/,它包含一个积极的后视,但它似乎在 Firefox 中不起作用,我遇到了一个异常。有什么替代方法?

标签: javascriptregexfirefoxnegative-lookbehind

解决方案


(?:^| )您可以在保持交替的非捕获组中将积极的向后看。

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

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

正则表达式演示

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])
});


推荐阅读