javascript正则表达式与组

时间:2017-01-14 13:28:02

标签: javascript regex

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

一个澄清的例子:字符串是" B 2 zzzzz"。我想抓住' zz'通过只定义一个正则表达式。我试过的是:

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

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

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

确实有效。所以我猜测\ 1反向引用是" 2"而不是2.有没有办法逃避这个?或者在不定义正则表达式的情况下执行此操作的其他方法?

1 个答案:

答案 0 :(得分:1)

我无法通过一个正则表达式找到一种方法,这里是使用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');
}