正则表达式 - 匹配2个字符之间的文本

时间:2010-06-02 19:33:43

标签: javascript css regex stylesheet

我需要一个与冒号前的单词匹配的正则表达式模式,以及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')

提前致谢。

2 个答案:

答案 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)

<。> .net

中的类似内容
[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:
}

享受!