有一种快速方法可以为所有CSS类添加前缀& ID的?

时间:2011-08-22 18:57:55

标签: php css regex css-selectors

我需要快速为我的所有类和ID添加前缀,这是一个非常大的CSS文件。我正在考虑一个快速正则表达式字符串,但到目前为止我失败了。有什么想法吗?

我尝试过简单的事情:

\#([A-z0-9]+) {

哪个会让我用#prefix_ $ 1代替,但不考虑:

#id {
#id.class
#id,

等。我不能只替换所有#[a-z0-9]因为它会尝试抓住背景颜色等等。

我还需要替换所有类,这对我来说更加困惑。

3 个答案:

答案 0 :(得分:1)

您可以搜索:

\.(-?[_a-zA-Z]+[_a-zA-Z0-9-]*)[^}]+{

\#(-?[_a-zA-Z]+[_a-zA-Z0-9-]*)[^}]+{

应找到所有的班级名称和ID名称

使用RegExr,请使用:

(?<=#|\.)(-?[_a-zA-Z]+[_a-zA-Z0-9-]*)(?=[^}]+{)

编辑: 这是谷歌CSS测试的链接 http://regexr.com?2ugv1

答案 1 :(得分:1)

您可以尝试使用[#|\.][\w]+\.?([\w\-]+\s?)这些

#id {
#id.class {
#id, #otherId {
#class-dashed
#class_dashed
ul li:after {content: " #id.class { ";}
.class {background-color:     #fff250}
#id.class {color:#ff}

还找到了一个很好的tool来玩不同的选项。颜色仍然存在问题,但你不能真正摆脱它,因为它们遵循与ids相同的规则。

<强>更新 从结果中排除:与颜色不匹配。

(?<![: ])[#\.][\w]+\.?([\w-]+\s?)你需要一个支持负面观察的正则表达式引擎,不熟悉php所以不知道它是否有它,但我想它会这样做。

答案 2 :(得分:-1)

我会选择这样的事情:

/([#\.])([^\d][a-z0-9-_]+)/ Replace with
$1PREFIX_$2

但请注意,它也会捕捉颜色,(如果使用小写字母)我正在努力解决这个问题。