2012-01-20 20 views
4

可能重复:
Parsing CSS in JavaScript/jQuery
Parsing CSS string with RegEx in JavaScriptJavascript正则表达式来检测字符串内的CSS代码?

我如何找出一个字符串包含CSS规则?

规则示例:

selector { 
    property:value; 
} 


selector { property:value; } 

selector{property:value} 

... 

基本上我想找出一个文本框表示无论是PHP + HTML或CSS代码。要做到这一点

一个办法 - 我想修剪文本,然后匹配文本与#.的第一个字符或CSS选择器如bodyp等你认为这是一个好主意?

+1

[本文](http://www.catswhocode.com/blog/10-regular-expressions-for-efficient-web-development)文章有拉出CSS属性的正则表达式。这可以修改以适合您的目的。正则表达式是:'\ s(?[a-zA-Z - ] +)\ s [:] {1} \ s *(?[a-zA-Z0-9 \ s。#] +)[;] {1}' – Chad

+0

不确定这是多么简洁,从来没有使用它自己,但它看起来很有希望... http://www.catswhocode.com/blog/10-regular-expressions-for-efficient-web-development – Archer

+0

修剪文本并尝试匹配选择器并不是一个好主意。你需要匹配每个HTML元素的列表。 –

回答

3

tldr;考虑使用适当的CSS解析器(如JSCSSP)进行最终验证。

这取决于目标,正则表达式可能完全无效。

如果这仅仅是“企图”,看它是否“可以”包含CSS选择器,那么我可能会倾向于尝试过于宽泛匹配,这将失败是有什么事情的CSS字符串值复杂(如“}”)或有CSS注释,并且将接受宽范围的输入即有效的CSS的:

(?:\s*\S+\s*{[^}]*})+  // use anchored 

同样,应检测简单的HTML(但是无效的表达)与标签,只有不幸的CSS案例(匹配注释或CSS字符串或疯狂的子选择器):

<(?:br|p)[^>{]*>|</\w+\s*> // use case-insensitive 

快乐编码。

另见:Parsing CSS in JavaScript/jQuery

2

http://arxiv.org/abs/1106.4064你可能会感兴趣。

算法编程语言识别

大卫·克莱恩,凯尔穆雷,西蒙·韦伯

(提交于2011年6月21日(V1),最新修订2011年11月9日(这个版本中,V2))

受到网络上未识别的代码量的驱动,我们介绍了一种用于算法识别源代码的编程语言的实用方法。我们的工作基于监督学习和智能统计功能。我们也探索了,但放弃了一种语法方法。在测试中,我们的实现远远优于依赖贝叶斯分类器的现有工具。代码是用Python编写的,可以在MIT许可下获得。

相关问题