簡體   English   中英

RegExp括號未捕獲

[英]RegExp parentheses not capturing

我開始弄亂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 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);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM