在Javascript中,是否可以仅提取正则表达式语句的某些部分?例如,如果我有一个正则表达式语句
/\.\w+\s\{|\.\-\w+\s\{/
我可以在不破坏匹配的情况下删除发现的fullstop和花括号吗?
让我这样说吧;
我正在搜索我的样式表以使用上面的正则表达式语句查找所有类,所以类总是从一个fullstop开始,我需要找到该类的第一个大括号。一旦我找到它,我只需要没有fullstop和花括号的类的名称来存储在哈希映射中。
那么有没有办法从我的答案中删除这些?我已经尝试过.replace方法,但为了实现这一点,我需要实际的字符串,我无法使用我已存储的变量。我将附加我的代码以及帮助你们进一步了解。提前谢谢!
if (rules[j].constructor === CSSMediaRule) {
mqrule = rules[j].cssText;
console.log(mqrule);
lines = (mqrule).split('\n');
for (var c = 0; c < lines.length; c++) {
if (lines[c].match(/\.\w+\s\{|\.\-\w+\s\{/)) {
console.log("It works!");
console.log(lines[c].match(/\.\w+\s\{|\.\-\w+\s\{/));
newKey = lines[c].match(/\.\w+\s\{|\.\-\w+\s\{/);
//I'VE TRIED IT 2 WAYS BUT NEITHER WORK.
newKey = newKey.replace(".", "");
newKey = newKey.replace(/[^a-zA-Z0-9\.]+/g);
//ANY SUGGESTIONS?
MQHash[newkey] = newValue;
console.log(MQHash);
}
}
mqls['mql' + j] = window.matchMedia(rules[j].media.mediaText);
mqls['mql' + j].addListener(mediaChange);
mediaChange(mqls['mql' + j]);
}
答案 0 :(得分:0)
不确定我是否理解你的nedds,但是怎么样:
/\.-?(\w+)\s\{/
您想要的结果是在第1组。
答案 1 :(得分:0)
使用捕获组:
/\.(\w+)\s\{|\.(\-\w+)\s\{/
对于每个()
,您将获得数组中的内容。
您应该使用它,因为它具有g
全局标志:
re = /\.(\w+)\s\{|\.(\-\w+)\s\{/;
matches = re.exec(css);
现在matches是一个包含所有捕获组的数组。 您感兴趣的是索引1,因为索引0始终是您匹配的整个文本。