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