我需要一个与冒号前的单词匹配的正则表达式模式,以及2个字符之间的值。这是一个例子,我有一个字符串:
str='`width: 1070px; padding: 0px 10px 0px 10px; height: auto; margin:0px auto 0px auto;`'
从样式表中,我需要一个数组来存储属性(冒号前面的文本),
(prptyArray[0]='width', prptyArray[1]='padding')
和另一个只存储值(2个字符之间的文本)
(valueArray[0]='1070px', valueArray[1]='0px 10px 0px 10px')
提前致谢。
答案 0 :(得分:1)
([\ W - ] +)?:\ S *([#\ W- \ S \ d] +);
Javascript没有子匹配组的方法。 exec仅返回找到的第一组。 尝试online regular expression tester中的exec 但是你仍然可以获得飞行中的所有子匹配。请尝试以下脚本
var str = "width: 1070px; padding: 0px 10px 0px 10px; height: auto; margin:0px auto 0px auto;";
var value1 =[];
var value2 =[];
var tmp;
do {
tmp = str;
str = str.replace(/([\w-]+):\s*([\#\w-\s\d]+);?/,function($0,$1,$2){
name1.push($1);
name2.push($2);
return $0.replace($1,"").replace($2,"");
});
} while(tmp!=str);
alert(value1 +"\n"+value2);
答案 1 :(得分:0)
[A-Za-z]+:{1}[A-Za-z0-9 ]+;{1}
如果您希望单独访问属性名称和值,则必须在表达式中实现分组,如下面的修改后的表达式。分组是通过围绕要捕获的组或部分表达式的parens“()”来实现的。
([A-Za-z]+):{1}([A-Za-z0-9 ]+);{1}
现在你将能够得到这样的结果。
myRegex = new Regex("([A-Za-z]+):{1}([A-Za-z0-9 ]+);{1}");
match = myRegex.exec("String you would like to parse");
while (match != null)
{
match[0] // property name:
match[1] // values:
}
享受!