给定“蝴蝶”这个词,我想返回仅包含来自“蝴蝶”的 5 个或更多连续字符的匹配项。
测试用例:
- 'butter' 将是匹配项。
- 'terfly' 是匹配项。
- “bXutterfly”将是一个匹配项(匹配子字符串“utterfly”)
- '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/