我有一个简短的问题要问你(对于你,我个人已经在这上面花了几个小时)。我已经在Javascript/Jquery中创建了一个web应用程序来验证CSS样式表。
我需要用Regex从选择器中提取多个CSS类名。我做了一些类似的事情:
var selector = this.value;
var userNewClass = selector.match(/[.]([A-Za-z_-]*)/);
alert(userNewClass.toString());
它几乎可以工作了,但是我的代码有两个问题(这里有一个Regex noob )。如果我这样写:
.test:hover
它返回我
.test, test
相同的类名,但用点打开,另一个不带点。如果我编写一个具有多个类名的选择器:
.test, .hello
我在那里得到了相同的result...Is来修改我的正则表达式(或者我的代码?)要获取所有带有点(.)的类名,请执行以下操作只是,考虑到用户在同一个选择器中可以有无限数量的类?
发布于 2013-01-05 19:42:58
.test
是完全匹配,test
是捕获的组(括号()
中的任何内容)。您还需要在结束/
之后的末尾添加一个g
,以匹配每个实例,而不仅仅是第一个实例。
也就是说,您可能不需要正则表达式,在字符串上使用split
可能会更好。
'.test, .hello'.split(', ') // returns an array ['.test', '.hello']
如果你一定要使用正则表达式,试试这个:
/\.(\w+)/g
这将匹配(并捕获)文字.
后面的一个或多个字母和/或数字\w+
的任何和所有序列
发布于 2013-01-05 19:55:21
您必须使用RegExp.exec方法:
var input = ".test1.test2 .test3, .test4";
var re = /\.[\w\-]+/ig, match, matches = [];
while (match = re.exec(input)) {
matches.push(match[0]);
}
alert(matches);
使用split将不起作用,因为您必须解析出伪类和所有其他可能的CSS语法元素。
https://stackoverflow.com/questions/14175595
复制