Javascript Regex-匹配两个字符之间的文本
我需要一个正则表达式模式,该模式将匹配冒号前的单词以及2个字符之间的值。下面是一个示例,我有一个字符串: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} 如果希望分别访问
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);