JavaScript 正则表达式:正向后视替代方案

IT技术 javascript regex
2021-01-30 03:57:34

我正在为此寻找替代方案:

(?<=\.\d\d)\d

(在句号后匹配第三个数字。)

我知道我可以通过使用其他方法来解决它,但我必须使用正则表达式,更重要的是我必须在字符串上使用替换,而不添加回调。

1个回答

将后视转变为消费模式并使用捕获组:

并按如下所示使用它:

var s = "some string.005";
var rx = /\.\d\d(\d)/;
var m = s.match(/\.\d\d(\d)/);
if (m) {
  console.log(m[1]);
}

编辑:

要删除3str.123使用当前的规格,使用相同的捕捉方法:捕捉你所需要的,并使用结果中的恢复捕捉文本$n在替换模式反向引用(S),刚符合你需要删除的内容。

var s = "str.123";
var rx = /(\.\d\d)\d/; 
var res = s.replace(rx, "$1");
console.log(res);

好吧,你str.123有value。你是不是想获得3replace我更新实际返回3str.123输入。
2021-03-16 03:57:34
预期的行为是var s = "str.123" s.replace(/(?<=\.\d\d)\d/, ''); // S is now "str.12"为没有更清楚这一点而道歉。
2021-03-17 03:57:34
不,3应该从字符串中删除replace
2021-03-24 03:57:34
嗯,我明白了。然后,仍然可以使用相同的方法:匹配您不需要的内容,匹配并捕获您需要的内容。试试var res = s.replace(/^.*\.\d\d(\d).*/, "$1")
2021-03-30 03:57:34
不幸的是,我不能使用匹配,就像我说我必须在没有回调的情况下使用替换,所以使用捕获组是不适用的。
2021-03-31 03:57:34