javascript - js 正向預(yù)查的正則 匹配不上?
問題描述
目的:去除大括號(hào)右邊的空格。下面的可以://第一個(gè)var a = '我是空格 {我是參數(shù)} 我前面 {我是參數(shù)} 有空格 我前面的空格不匹配';hand_trim1(a);function hand_trim1(str){
return str.replace(/(?:})s+/g,’}’);
}
//第二個(gè)var a = '我是空格 {我是參數(shù)} 我前面 {我是參數(shù)} 有空格 我前面的空格不匹配';hand_trim2(a);function hand_trim2(str){
return str.replace(/}s+/g,’}’);
}
//第三個(gè)(這個(gè)為什么就是匹配不上呢????????)var a = '我是空格 {我是參數(shù)} 我前面 {我是參數(shù)} 有空格 我前面的空格不匹配';hand_trim3(a);function hand_trim3(str){
return str.replace(/(?=})s+/g,’’);
}
問題解答
回答1:正向預(yù)查是零寬,意思就是寬度是0,只是匹配一個(gè)位置,只要這個(gè)位置滿足就可以,并不匹配具體的內(nèi)容;(?=})匹配的位置應(yīng)該是在這個(gè)位置后面有一個(gè)};s+表示從這個(gè)位置起,后面跟著空白符;所以,滿足上面兩個(gè)條件的位置是這個(gè)位置后面的字符即是},又是空白符,因此,這種位置根本不存在,所以不匹配;其實(shí)這個(gè)位置應(yīng)該是左邊是一個(gè)},右邊是s+,但是js沒有負(fù)向斷言,無(wú)法預(yù)測(cè)左側(cè)的字符類型。
相關(guān)文章:
1. docker api 開發(fā)的端口怎么獲?。?/a>2. 在windows下安裝docker Toolbox 啟動(dòng)Docker Quickstart Terminal 失?。?/a>3. angular.js - angularjs的自定義過濾器如何給文字加顏色?4. MySQL數(shù)據(jù)庫(kù)中文亂碼的原因5. docker gitlab 如何git clone?6. angular.js - 關(guān)于$apply()7. docker-compose 為何找不到配置文件?8. dockerfile - 我用docker build的時(shí)候出現(xiàn)下邊問題 麻煩幫我看一下9. mysql - 新浪微博中的關(guān)注功能是如何設(shè)計(jì)表結(jié)構(gòu)的?10. css - C#與java開發(fā)Windows程序哪個(gè)好?
