JavaScript 正则表达式帮助

标签 javascript regex

我需要使用 JavaScript split,但我对正则表达式没用,所以我想做的是采用类似于 CSS 结构的文本,例如:

var str = "selector {
  width: 100px;
  height: 20px;
}

.anything{
  margin: 5%;
}"; 

str.split(/regex goes here/);

预期输出

[
  0 = selector{width: 100px; height: 20px;},
  1 = .anything{margin: 5%;}
]

希望这不会太令人困惑,但如有疑问,请询问。

谢谢。

最佳答案

我不会为此使用拆分。相反,使用此正则表达式来提取每个规则:

([\s\S]*?{[\s\S]+?})

非常简单,但只要规则本身没有 { 和 } 字符就应该可以工作(我预计这种情况很少见)。只要 CSS 在语法上有效,我的正则表达式就会忽略空格和换行符。我使用 [\s\S] 代替 .,因为 . 与换行符不匹配。

在您的情况下,提取规则将是:

var myCSS = "CSS goes here";
var rules = myCSS.match(/([\s\S]*?{[\s\S]+?})/);

编辑:

根据询问者的请求,我修改了我的正则表达式以忽略选择器,例如:a {}。但是,它仍然会捕获 a { }。我将尝试找到解决方案,但同时您可能只需要处理每个规则并删除空规则。

关于JavaScript 正则表达式帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3327581/

相关文章:

javascript - 事件流数据未显示在 Chrome 控制台中

javascript - 捕获正则表达式灾难性回溯 Node.js

regex - 跳过正则表达式字符,直到使用golang搜索

javascript - 如何使用 JavaScript 正则表达式从字符串中删除剩余的逗号?

用于匹配文件路径的 PHP 正则表达式

javascript - 如何使用正则表达式检查字符串是否包含带空格的逗号?

javascript - 尝试在 javascript 正则表达式中捕获组(来自 C# 的端口)

javascript - 更改 jQuery 的默认序列化器

javascript - react /通量 : Firing an action from a render method of an component or doing a Rest call from a component?

javascript - 数据表和 Firebase Web