0

更新

我需要你的帮助来打败正则表达式!我以 AJAX 响应的形式获取外部 CSS 文件,如下所示:

$.when($.get("style.css")).done(function(response) {
    var myCSS = response;
    var patt = new RegExp("#mydiv(.*?)}","g");
    var match = myCSS.match(patt);
    alert(match);  
}

我在这里想要实现的是我想得到从#mydiv到最后一个右括号}的所有内容,但由于某种原因alert(match)返回null

最烦人的是当我将模式更改为:

var patt = new RegExp("#mydiv(.*?){","g"); // <-- Changed } to {

alert(match)返回我应该返回的内容 --> #mydiv .mylink {

或者当我以这样的简单字符串形式表示相同的 CSS 时:

$.when($.get("style.css")).done(function(response) {
    var myCSS = "The same style.css but copy-pasted here";
    var patt = new RegExp("#mydiv(.*?)}","g");
    var match = myCSS.match(patt);
    alert(match);  
}

按预期使用我的初始模式。有什么想法我在这里想念什么吗?

4

2 回答 2

1

是正则表达式上的}保留字符,您必须使用\. 我认为你所追求的正则表达式是"#mydiv(.*)\}"或者"#mydiv(.*)\\}"如果它\本身必须被转义。

于 2013-02-04T01:03:51.600 回答
0

好的,我想我已经找到了解决方案。

var patt = new RegExp("#" + myID + "(\n|.)*?}","g");

在疯狂的谷歌搜索、stackoverflow 和整晚与社区讨论之后。我发现问题在于 JS Regex 无法将其识别.为新行,因此您需要(\n|.)替换。

我不确定这个解决方案是否通用,并且会在不同的 CSS 文件上对其进行测试。谢谢评论我帖子的小伙伴们!我真的很感谢你的合作!

来源: http: //goo.gl/1W55l的尽头

于 2013-02-04T12:16:07.503 回答