【问题标题】:regex match number in parentheses (Firefox) [duplicate]括号中的正则表达式匹配号(Firefox)[重复]
【发布时间】:2019-04-18 04:31:57
【问题描述】:

我有这样的字符串:

(3) Request Inbox

现在我想检测括号中的数字3。请注意3。我用 javascript 编写了这个正则表达式,但它在 Firefox 中不起作用。

var regex = new RegExp(/(?<=\()\d+(?:\.\d+)?(?=\))/g);

控制台错误:SyntaxError: invalid regexp group

Demo link

【问题讨论】:

  • 如果只想匹配数字,还需要前瞻吗?像/^\((\d+)\)/g 这样简单的东西怎么样 - 它在第 1 组中匹配。或者您的意思是,只有完整匹配?

标签: javascript regex string


【解决方案1】:

大多数浏览器不支持正向回溯,因此请使用其他方法来获取答案。

类似的,

var string = "somestring(12)";
var exp = /(?:\()(\d+)(?:\.\d+)?(?=\))/;
var mat = string.match(exp);

if(mat) {
    console.log(mat[1]);// second index
}

这应该只给出 12 作为答案

【讨论】:

  • 有问题,请检查https://regex101.com/r/eNOcvx/2
  • 第一个括号显示为 'matched' 字符串,但是当你得到匹配的组时,它只会显示为数字
【解决方案2】:

要完整匹配,请尝试以下操作:

var regex = new RegExp(/(?=\d+\))\d+/g);

【讨论】:

  • 欢迎来到 StackOverflow!您的答案需要更多关于代码如何工作的解释才能成为一个好的答案。
猜你喜欢
  • 2015-06-23
  • 2023-04-02
  • 1970-01-01
  • 2011-07-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-03
相关资源
最近更新 更多