簡體   English   中英

JavaScript RegExp模式

[英]JavaScript RegExp pattern

我有一個像下面這樣的字符串...

var1=val1 var2=val2 var3="p1 p2 p3 p4" var4="p1 p2" var5=val5

現在,我如何使用RegExp僅在""內用underscore替換所有white spaces ,以便字符串如下所示:

var1=val1 var2=val2 var3="p1_p2_p3_p4" var4="p1_p2" var5=val5

這樣通過使用.replace('"','').split(' ') ,我可以得到一個像下面這樣的數組...

Array(
   var1: "val1",
   var2: "val2",
   var3: "p1_p2_p3_p4",
   var4: "p1_p2",
   var5: "val5"
)

請不要jQuery ...

您想通過用字符串中的下划線替換空格來用另一個字符串替換輸入字符串中的每個字符串。 您可以使用帶有替換的回調來做到這一點:

var inp='var1=val1 var2=val2 var3="p1 p2 p3 p4" var4="p1 p2" var5=val5'

var outp=inp.replace(/"[^"]*"/g, function(x){
  return x.replace(/ /g, '_');
})

// var outp === 'var1=val1 var2=val2 var3="p1_p2_p3_p4" var4="p1_p2" var5=val5'

我知道已經回答了這個問題,但我想我應該積極地與大家分享這個正則表達式。 這使您可以在不使用回調的情況下進行replace

var str = 'var1=val1 var2=val2 var3="p1 p2 p3 p4" var4="p1 p2" var5=val5';

str = str.replace(/\s(?=[^=]*")/g, '_');

解釋:

\s        match a space...
(?=       start of positive look-ahead
[^=]*"    ...which is followed by anything except an =, up to a double-quote
)         end of positive look-ahead

然后g將重復搜索

var arr = string.replace(/(=")([^"]*)(")/g,function(m,g1,g2,g3){return g1 + g2.replace(/ /g, "_") + g3;}).split(' ');

選擇您需要的一個:

賓語:

var txt = 'var1=val1 var2=val2 var3="p1_p2_p3_p4" var4="p1_p2" var5=val5',
    arr = txt.split(" "),
    obj = {};

for(var i = 0 ; i < arr.length; i++){
    var ind = arr[i].match(/^(.+)=/)[1],
        val = arr[i].match(/=(.+)$/)[1].replace(/_/g," ");
    obj[ind] = val;
}

console.log(obj);  //This will give you an object.
// {
//     var1: "val1",
//     var2: "val2",
//     var3: ""p1 p2 p3 p4"",
//     var4: ""p1 p2"",
//     var5: "val5"
// }

陣:

var txt = 'var1=val1 var2=val2 var3="p1_p2_p3_p4" var4="p1_p2" var5=val5',
    arr = txt.split(" "),
    list = [];

for(var i = 0 ; i < arr.length; i++){
    var val = arr[i].match(/=(.+)$/)[1].replace(/_/g," ");
    list.push(val);
}

console.log(list);  //This will give you an array.
// [
//     "val1",
//     "val2",
//     ""p1 p2 p3 p4"",
//     ""p1 p2"",
//     "val5"
// ]

暫無
暫無

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

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