javascript正则表达式与组重复

标签 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。有没有办法避免这个?或者另一种无需定义正则表达式的方法?

最佳答案

我看不到使用单个正则表达式来完成此操作的方法,这是一种使用 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/

相关文章:

c# - 正则表达式以匹配多个字符串并向后看

javascript - 处理来自 http 响应的重定向

regex - 复杂的前瞻/非贪婪正则表达式

javascript - 在启动时使用 Meteor FS Collections 将 wav 转换为 mp3

javascript - 类型 'entries' 上不存在属性 'ObjectConstructor'

mysql - 使用 regexp w/mysql 时模式错误..?

python - 使用正则表达式从字符串中仅提取 Unicode 字符

php - 用于替换 html 代码中的 css 类的正则表达式

javascript - gzip js 文件值得吗?

javascript - Windows Phone 8.1 上的 JS OAuth 2.0