Javascript Regex-匹配两个字符之间的文本

Javascript Regex-匹配两个字符之间的文本,javascript,css,regex,stylesheet,Javascript,Css,Regex,Stylesheet,我需要一个正则表达式模式,该模式将匹配冒号前的单词以及2个字符之间的值。下面是一个示例,我有一个字符串: str='`width: 1070px; padding: 0px 10px 0px 10px; height: auto; margin:0px auto 0px auto;`' 从样式表中,我只需要一个数组来存储属性(冒号前的文本) 另一个仅存储值(2个字符之间的文本) 提前谢谢。在.net中类似的内容 [A-Za-z]+:{1}[A-Za-z0-9 ]+;{1} 如果希望分别访问

我需要一个正则表达式模式,该模式将匹配冒号前的单词以及2个字符之间的值。下面是一个示例,我有一个字符串:

str='`width: 1070px; padding: 0px 10px 0px 10px; height: auto; margin:0px auto 0px auto;`' 
从样式表中,我只需要一个数组来存储属性(冒号前的文本)

另一个仅存储值(2个字符之间的文本)


提前谢谢。

在.net中类似的内容

[A-Za-z]+:{1}[A-Za-z0-9 ]+;{1}
如果希望分别访问属性名称和值,则必须在表达式中实现分组,如下面修改的表达式。分组是用paren“()”围绕要捕获的组或表达式的一部分实现的

([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:
}
享受吧

([\w-]+):\s*([\w-\s\d]+)

Javascript没有用于子匹配组的方法exec只返回找到的第一个组。 请在中尝试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}
使表达式混乱,可以省略。谢谢你的快速回答,道格。作为对您答案的回应,您知道如何使用split方法来获取属性数组或值数组吗?i、 e.str.split(/^[A-z]+:/);?虽然我只得到了它匹配的第一个组,但这确实更接近我所寻找的。我认为解决方法是在整个表达式周围再放一个分组表达式,就像这样(([A-Za-z]+):{1}([A-Za-z0-9]+);{1})谢谢unigg,虽然我相信您在函数中使用了错误的数组名称,但它工作得非常好,所以我将其分别更改为value1和value2后,它就工作了!
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:
}
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);