如何用JS正则匹配忽略空格与大小写的连续重复字符?
适配需求的正则表达式
可直接使用以下JS正则,实现忽略空格、忽略大小写匹配至少3个连续相同字符的需求:
/([a-z])\s*(?:\1\s*){2,}/gi
正则各部分含义
([a-z]):捕获首个字母作为分组,搭配末尾的i修饰符自动忽略大小写\s*:匹配当前字符后任意数量的空格(包含0个)(?:\1\s*){2,}:非捕获分组,要求至少再匹配2次与首个分组相同的字符(加上首个分组总次数≥3),每次匹配字符后都允许跟任意数量空格- 末尾修饰符
gi:g代表全局匹配所有符合规则的片段,i代表忽略大小写匹配
使用示例
如果要将匹配到的连续重复字符移除,可直接使用replace方法:
const str1 = 'i like <strong>eee</strong>ting pie and <strong>a a a a a</strong> bananas.' const str2 = "My name <strong>iII</strong>s John Doe and <strong>A a A a AA AAA</strong> I'm cool." const repeatReg = /([a-z])\s*(?:\1\s*){2,}/gi console.log(str1.replace(repeatReg, '')) // 输出:i like <strong></strong>ting pie and <strong></strong> bananas. console.log(str2.replace(repeatReg, '')) // 输出:My name <strong></strong>s John Doe and <strong></strong> I'm cool.
如果需要匹配字母外的其他字符(比如数字、符号)的连续重复,可将正则中的[a-z]替换为.即可。
内容的提问来源于stack exchange,提问作者Mosukoshide
相关产品推荐
相关产品推荐

