Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/413.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 未捕获的RegExp括号_Javascript_Regex - Fatal编程技术网

Javascript 未捕获的RegExp括号

Javascript 未捕获的RegExp括号,javascript,regex,Javascript,Regex,我开始有点乱用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的部分。使用

我开始有点乱用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 ...

是否有一个单行解决方案,或者我必须进行另一个注册表匹配?此外,是否存在我不知道的涉及修饰符和括号的任何奇怪行为?

您需要迭代地重新应用正则表达式:

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);
}
var myregexp=/[a-zA-Z]+:([0-9]+px)/G
var match=myregexp.exec(主题);
while(匹配!=null){
对于(变量i=0;i
这里有一个解决方案,它适用于不包含
的值:

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);

因此,没有像php那样的$mathes数组包含括号中匹配的所有值?@MarioLegenda:我不这么认为(也不这么认为)。当然,这个正则表达式不会断言匹配之前有标识符/冒号。这可能对OP有影响,也可能无影响。对不起,我不明白你评论的第一句话,你能重新措辞吗?我的意思是正则表达式也会找到
“50px”
,即使它不是在
“top:50px”
这样的上下文中。你能提供一个例子吗?你的正则表达式匹配字符串
“50px”
,OP的正则表达式不匹配。事实上,您的正则表达式也匹配
“lalala”
…您想得到像
[“50px”、“50px”、“50px”、“50px”]
这样的数组吗?