【发布时间】:2023-01-12 05:02:55
【问题描述】:
我正在为此寻找替代方案:
(?<=\.\d\d)\d
(匹配句点后的第三个数字。)
我知道我可以使用其他方法解决它,但我必须使用正则表达式,更重要的是我必须在字符串上使用替换,而不添加回调。
【问题讨论】:
标签: javascript regex
我正在为此寻找替代方案:
(?<=\.\d\d)\d
(匹配句点后的第三个数字。)
我知道我可以使用其他方法解决它,但我必须使用正则表达式,更重要的是我必须在字符串上使用替换,而不添加回调。
【问题讨论】:
标签: javascript regex
将 lookbehind 转换为消费模式并使用捕获团体:
并按如下所示使用它:
var s = "some string.005";
var rx = /.dd(d)/;
var m = s.match(/.dd(d)/);
if (m) {
console.log(m[1]);
}
或者,获取所有匹配项:
const s = "some string.005 some string.006";
const rx = /.dd(d)/g;
let result = [], m;
while (m = rx.exec(s)) {
result.push(m[1]);
}
console.log( result );
matchAll 的例子:
const result = Array.from(s.matchAll(rx), x=>x[1]);
编辑:
要使用您当前的规范从 str.123 中删除 3,请使用相同的捕获方法:捕获您需要的内容并使用替换模式中的 $n 反向引用在结果中恢复捕获的文本,并且只匹配您需要删除的内容。
var s = "str.123";
var rx = /(.dd)d/;
var res = s.replace(rx, "$1");
console.log(res);
【讨论】:
var res = s.replace(/^.*.dd(d).*/, "$1")。
var s = "str.123" s.replace(/(?<=.dd)d/, ''); // S is now "str.12" 很抱歉没有更清楚地说明这一点。
str.123 值。你是想用replace获取3吗?我的更新实际上为 str.123 输入返回 3。
3应该被replace从字符串中删除。