我有以下案例:想象你想在className中预先添加前缀THIS
。你有以下可能的例子:
.class-name .class-name-whatever {}
.class-name-other {}
我正在使用以下RegExp并且效果很好
return text.replace(new RegExp('class-name', 'g'),`THIS.class-name`);
输出
THIS.class-name THIS.class-name-whatever {}
THIS.class-name-other {}
很好,但问题出在这里:
如果我有.class-name.class-name-other
我希望以THIS.class-name.class-name-other
而不是THIS.class-nameTHIS.class-name-other
结束,我怎样才能定位.class-name
的第一次出现。
我在其他RegExp中搜索过但无法找到解决方案。
---更新---------
也许我对我的问题不是很清楚抱歉。
我需要使用g
因为我正在搜索并替换整个文本块作为示例:
查看以下示例.example.example--black
将以THIS.example.THIS.example--black
结尾,THIS.example.example--black
输入:
.example {min-width: 20rem;padding: 2.5rem 0; }
.example .example__line--extra-space {display: block;margin-top:1.5625rem;}
.example .example__copyright a {border: 0; }
.example.example--black a {color: white; }
.example.example--black h3 {color: white; }
@media only screen and (max-width: 46em) {
.example .example__list--connect .example__connect__link {height: 2.625rem; width: 2.625rem; }
.example .example__list--connect .example__connect__link img {width: 1rem; vertical-align: middle; } }
应在处理结束时添加THIS
。每个.example ocurrence。
答案 0 :(得分:1)
查找/(\.\s*example\s*[^{]*{)/
替换THIS$1
答案 1 :(得分:0)
'g'
修饰符代表“全局”。只是失去它,正则表达式将仅应用于第一场比赛:
return text.replace(new RegExp('class-name'),`THIS.class-name`);
// HERE -----------------------------------^
答案 2 :(得分:0)
您可以将正则表达式更改为以下内容:
/class-name.*/g
哪个是贪婪的正则表达式,.
匹配除换行符之外的所有内容:
text.replace(/class-name.*/g, 'THIS.$&');
/.../
是一个正则表达式构造。另请注意,$&
指的是整个匹配的字符串