gpt4 book ai didi

javascript正则表达式与组重复

转载 作者:行者123 更新时间:2023-12-03 05:14:44 24 4
gpt4 key购买 nike

我想在重复 ({}) 内使用捕获的组/反向引用。这不起作用可能是因为在重复内部反向引用是引号内的数字而不是数字。有没有办法摆脱引号?

举例说明:字符串是“B 2 zzzzz”。我想通过仅定义一个正则表达式来捕获“zz”。我尝试的是:

'B 2 zzzz'.match(/B (\d)+ (z{\1})/)

这不会返回任何内容。以下内容

'B 2 zzzz'.match(/B (\d)+ (z{2})/) 

确实有效。所以我猜测\1 反向引用是“2”而不是 2。有没有办法避免这个?或者另一种无需定义正则表达式的方法?

最佳答案

我看不到使用单个正则表达式来完成此操作的方法,这是一种使用 2 个正则表达式的方法,第一个正则表达式拾取数字,第二个使用该值构建新的正则表达式:

str = 'B 3 zzzzz';
num = str.match('B (\\d+) z+');
re = new RegExp('B \\d+ (z{' + num[1] + '})');
z = str.match(re);
console.log('z = '+z[1]);

另一种方式:

str = 'B 3 zzzz';
num = str.match('B (\\d+) (z+)');
if (num[2].length >= num[1]) {
z = num[2].substr(0, num[1]);
console.log('z = ' + z);
} else {
console.log('No match');
}

关于javascript正则表达式与组重复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41650530/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com