搜尋

首頁  >  問答  >  主體

javascript - js 正向預查的正規 符合不上?

目的:去除大括號右邊的空格。
下面的可以:
//第一個
var a = "我是空格{我是參數} 我前面{我是參數} 有空格我前面的空格不符";
hand_trim1(a);
function hand_trim1(str){

return str.replace(/(?:\})\s+/g,'}');

}

//第二個
var a = "我是空格{我是參數} 我前面{我是參數} 有空格我前面的空格不符";
hand_trim2(a);
function hand_trim2(str){

return str.replace(/}\s+/g,'}');

}

//第三個(為什麼就是不匹配呢????????)
var a = "我是空格{我是參數} 我前面{我是參數} 有空格我前面的空格不符";
hand_trim3(a);
function hand_trim3(str){

return str.replace(/(?=\})\s+/g,'');

}

代言代言2713 天前804

全部回覆(1)我來回復

  • 仅有的幸福

    仅有的幸福2017-06-26 10:58:06

    正向預查是零寬,意思就是寬度是0,只是匹配一個位置,只要這個位置滿足就可以,並不匹配具體的內容;
    (?=})匹配的位置應該是在這個位置後面有一個}
    s+表示從這個位置起,後面跟著空白符;
    所以,滿足上面兩個條件的位置是這個位置後面的字符即是},又是其實符,因此,這種位置根本不存在,所以不匹配;
    其實這個位置應該是左邊是一個},右邊是s+,但是js沒有負向斷言,無法預測左側的字元類型。

    回覆
    0
  • 取消回覆