javascript - 在正则表达式中使用单个组匹配重复模式

标签 javascript regex

使用 JS 正则表达式对象,是否可以使用单个或几个组来匹配重复模式?

例如,将以下内容作为输入:

#222<abc#321cba#123>#111

是否可以使用类似于以下的正则表达式来匹配“#321”和“#123”(但不能匹配 #222 或 #111,因为它们在 /<.*?>/ 组之外):

/<.*?(?:(#[0-9]+).*?)>/

(当前仅匹配第一个实例),当输入中的匹配数未知时?

最佳答案

你必须循环内部模式。 首次使用/<(.*?)>/提取它:

var outerRegex = /<(.*?)>/;
var match = outerRegex.exec(input);
var innerPattern = match[1];

接下来,迭代结果:

var innerRegex = /#\d+/g;
while (match = innerRegex.exec(innerPattern))
{
    var result = match[0];
    ...
}

关于javascript - 在正则表达式中使用单个组匹配重复模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25814894/

相关文章:

javascript - 将值与数组值进行比较的问题

javascript - 如何在 JQUERY 中重写点击 url? (查询)

javascript - 从 Controller 更新 Ember 模型

java - 正则表达式提取内容类型

java - 如何在Java程序中通过正则表达式仅显示网页内容(不显示任何标签、链接)

javascript - 具有多对多关系的 Knockout JS ObservableArray

javascript - 访问 Javascript 中对象数组内的所有属性

regex - 这个替代字符串中的第二个 `^` 是多余的吗?

javascript - 使用正则表达式验证 keyup 事件的用户输入

javascript - 如何使用 JavaScript 正则表达式删除标签