我开始乱用javascript并且遇到正则表达式问题。 我有一个字符串......
var example = "top:50px;right:50px;bottom:50px;left:50px;"
我想从字符串中提取'50px'部分。 我用这段代码试了一下......
var theMatch = example.match(new RegExp('[a-zA-Z]+:([0-9]+px);'));
提取50px部分,但仅限于字符串中搜索值的第一次出现。我尝试了'g'修饰符,但他没有捕获50px部分。使用'g'修饰符,结果是na数组与整个匹配...
top:50px
right:50px
... etc ...
是否有一个单行解决方案或我必须做另一个reg匹配?此外,是否有任何奇怪的行为涉及修饰符和我不知道的括号?
答案 0 :(得分:3)
您需要迭代重新应用正则表达式:
var myregexp = /[a-zA-Z]+:([0-9]+px);/g;
var match = myregexp.exec(subject);
while (match != null) {
for (var i = 0; i < match.length; i++) {
// matched text: match[i], so match[1] contains e.g. "50px"
}
match = myregexp.exec(subject);
}
答案 1 :(得分:0)
以下是适用于不包含:
和;
的值的解决方案:
var s = 'top:50px;right:50px;bottom:50px;left:50px;';
s.match(/[^:;]+(?=;|$)/g);
以下是基于键:
var s = 'top:50px;right:50px;bottom:50px;left:50px;';
s.replace(/[ ;]+$/, '').split(/(?:^| *;).*?: */).slice(1);