如何使用RegExp匹配所有可能的匹配
How to match all possible matches with RegExp?
我想不出一种方法来获得所有可能的匹配。对于最基本的例子,我有这样的:
"bbb".match(/bb/g);
//returns ["bb"]
但我希望它返回["bb","bb"]
,因为bb
与前两个b匹配,然后再次与最后两个b的匹配
在这个例子中,可能的匹配是相同的,但它们不必是例如:
"abab".match(/(.{1}).{1}'1/g);
//returns ["aba"]
再次在这里,我希望["aba","bab"]
有办法做到这一点吗?
match(/.../g)
找到的所有匹配项都是不重叠的:一旦找到匹配项,regexp引擎就会从匹配项的末尾开始继续。
如果你想使用这种机制,你不能使用完全匹配;但是您可以使用前瞻性和组,以及迭代。例如,这将起作用:
re = /bb/g;
var results = [];
while (matches = re.exec("bbb")) {
results.push(matches);
re.lastIndex -= matches[0].length - 1;
}
可以像这样使用positive lookahead
来完成重叠匹配。
Regex:(?=(bb))
解释:
- 它向前看
bb
并捕获它。Regex指针不在第二个b
,它再次向前看并捕获bb
,这次留下第一个。它一直持续到字符串结束
Regex101演示
相关文章:
- 如何使用javascript从同一浏览器下的其他页面获取URL?有可能吗
- 我有可能防止黑客使用网络控制台用JavaScript重复调用upvote(AJAX)函数吗
- 有可能在Chrome扩展中使用ES6吗
- 这可能只使用有角度的形式吗
- 有可能做一个日期&使用jquery ui的时间日历
- 是否有可能在 JavaScript 中使用异步方法进行迭代
- 理论上是否有可能使用 chromium 的可安装网络应用程序 API 构建纯 JS bittorrent
- 是否有可能在具有内联样式的样式标签上使用XSS进行攻击
- 是否有可能知道用户何时点击YouTube视频上的广告
- 是否有可能使用三个.js文件读取STEP文件
- 是否有可能仅使用HTML和JavaScript上传并提取zip文件到给定位置?
- 是否有可能构建使用appMobi XDK编写的iOS应用程序,而无需通过他们的生产托管服务?
- 是否有可能直接使用JavaScript进入打印过程而不加载html页面?
- 是否有可能仅使用CSS对innerHTML进行动画化更改?
- GWT:是否有可能先使用GWT开始项目,然后最终迁移到完整的javascript ?
- 是否有可能只使用客户端web技术来编写社交网络?
- 是否有可能只使用一个特定的窗口(例如JS)而不是通常的4个
- 是否有可能将使用PHP上传的文件传递给javascript作为输入
- 是否有可能仅使用HTML和JavaScript动态设置MAILTO的收件人?
- 是否有可能仅使用客户端技术获得网页的特定静态内容?