正则表达式问题:移除{到:及:到}间内容的正确写法
解决正则表达式匹配范围过大的问题
你遇到的问题其实是正则里的贪婪匹配在搞鬼!之前用的/:.*}/g中,.*是贪婪模式,它会从第一个:开始,尽可能多地匹配字符,直到碰到最后一个}才停下,所以才会把后面所有内容都吃掉,只留下{category}。
给你两种靠谱的解决方案:
方案一:使用非贪婪量词
正则表达式写成:
/:.*?}/g
这里的.*?是非贪婪模式,它会匹配到第一个}就停止,不会跨到后面的},刚好符合你要移除每个:到对应}之间内容的需求。
方案二:使用否定字符集
如果觉得非贪婪量词不够直观,也可以用否定字符集来精准匹配:
/:[^}]+}/g
[^}]表示匹配任何不是}的字符,这样只会匹配当前:到同个{}块里的},绝对不会越界到后面的块。
验证效果
原字符串:
{category:-}{product}-{rewrite:/}{/:controller}
用上面任意一种正则替换为空字符串后,都会得到你想要的结果:
{category}{product}-{rewrite}{controller}
内容的提问来源于stack exchange,提问作者user9614762
相关产品推荐
相关产品推荐

