请你以编程大佬的角色解决一下问题: let str = 我是==谁===第二章 哈哈===你不会送了吧男丁===第三章 流===你是她女儿吗是的===第四章 校长===终究敌不过=他们啊。; let regex = ^=+==^=+g; let matches = strmatchregex;为什么只得到我是==谁呢?
问题出在正则表达式的匹配规则上。正则表达式[^=]+==[^=]+表示匹配除了等号以外的任意字符至少一次,然后是两个等号,然后再是除了等号以外的任意字符至少一次。但在给定的字符串中,只有第一个匹配满足这个规则,后面的匹配都不满足。
要解决这个问题,可以使用正则表达式[^=]+==[^=]+的全局匹配模式,即在正则表达式最后加上g标志。这样可以匹配到所有满足规则的子串。修改代码如下:
let str = "我是==谁===第二章 哈哈===你不会送了吧,男丁?===第三章 流===你是她女儿吗?是的===第四章 校长===终究敌不过=他们啊。";
let regex = /[^=]+==[^=]+/g;
let matches = str.match(regex);
console.log(matches);
运行结果为:
["我是==谁", "第二章 哈哈", "你不会送了吧,男丁?", "第三章 流", "你是她女儿吗?是的", "第四章 校长", "终究敌不过=他们啊"]
可以看到,现在匹配到了所有满足规则的子串
原文地址: https://www.cveoy.top/t/topic/hLrF 著作权归作者所有。请勿转载和采集!