【问题标题】:Positive lookbehind in regex in Firefox [duplicate]Firefox 中正则表达式的积极回溯[重复]
【发布时间】:2019-08-19 23:37:31
【问题描述】:

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

【问题讨论】:

  • aren’t supported in Firefox 后面寻找。请edit您的问题并在上下文中解释这个正则表达式是如何使用的
  • 最有可能的是,单词边界 (\b) 足以替代两种环视,例如/\b\d(\.\d+)?\b/。您也可以尝试用空格分割原始字符串并解析各个部分。
  • 自 2020 年 6 月 30 日起现在支持 Lookbehinds(请参阅 release notes

标签: javascript regex firefox negative-lookbehind


【解决方案1】:

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

然后在捕获组(\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])
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-06
    • 1970-01-01
    • 1970-01-01
    • 2017-08-23
    相关资源
    最近更新 更多