javascript - 如何使用 Javascript 正则表达式按设定顺序匹配子字符串

标签 javascript regex string search matching

给定“蝴蝶”这个词,我想返回仅包含来自“蝴蝶”的 5 个或更多连续字符的匹配项。

测试用例:

  1. 'butter' 将是匹配项。
  2. 'terfly' 是匹配项。
  3. “bXutterfly”将是一个匹配项(匹配子字符串“utterfly”)
  4. 'butt' 不匹配(少于 5 个连续字符)。

当前代码在不应该匹配的时候匹配,因为匹配的 5 个字符不连续,我理解这是因为字符串在 [square braces] 中:

const str = 'ylfrettbu';
const regex = new RegExp('[butterfly]{5,}', 'gi');
const matched = str.match(regex);

被匹配的字符串必须是动态的因此:new RegExp

最佳答案

您可以在要匹配的字符串上运行以下正则表达式:

(?=(.{5}))

替换为(对于每场比赛)

$1|

https://regex101.com/r/dDJYh1/1

结果是您可以对正在搜索的实际数据使用的正则表达式。 (butte|utter|tterf|terfl|erfly for butterfly)

我刚刚注意到 regex101 没有显示下面的分割,它显示在捕获组的右侧。 右边 的捕获组是正确的。我不太确定 js 是如何分解的,所以希望其他人可以给你一个更完整的答案或编辑我的。

真的不懂 js,但这似乎可以解决问题:

var re = /(.)(?=(.{4}))/g;
var s = "butterfly";

var m = re.exec(s);
do {
    print(m[1]+m[2]);
    m = re.exec(s);
}while(m)

关于javascript - 如何使用 Javascript 正则表达式按设定顺序匹配子字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50610787/

相关文章:

ios - 在 Objective C 中将字符串转换为 float 而不对其进行舍入。?

javascript - Rails js.erb 不执行 javascript

c - 带有小框 0 和 1 的 ubuntu 终端上的输出是什么?

java - 了解 Java 中字符串比较的工作原理

ruby - 用于验证 ruby​​ 中的 IPv4 地址的正则表达式

Javascript 和 Internet Explorer 8 错误

regex - .htaccess 如果 URL 错误,请执行某些操作

javascript - 使 'scroll-sneak' 工作

javascript - iMacros 使用 EVAL 删除文本

javascript - 通过更改浏览器宽度,根据其原始值更改字体大小