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,’’);
}
問題解答
回答1:正向預查是零寬,意思就是寬度是0,只是匹配一個位置,只要這個位置滿足就可以,并不匹配具體的內容;(?=})匹配的位置應該是在這個位置后面有一個};s+表示從這個位置起,后面跟著空白符;所以,滿足上面兩個條件的位置是這個位置后面的字符即是},又是空白符,因此,這種位置根本不存在,所以不匹配;其實這個位置應該是左邊是一個},右邊是s+,但是js沒有負向斷言,無法預測左側的字符類型。
相關文章:
1. angular.js - 輸入郵箱地址之后, 如何使其自動在末尾添加分號?2. javascript - 后臺管理系統左側折疊導航欄數據較多,怎么樣直接通過搜索去定位到具體某一個菜單項位置,并展開當前菜單3. 如何解決docker宿主機無法訪問容器中的服務?4. javascript - Web微信聊天輸入框解決方案5. javascript - 如何使用nodejs 將.html 文件轉化成canvas6. python - Scrapy存在內存泄漏的問題。7. 如何用筆記本上的apache做微信開發的服務器8. CSS3 畫如下圖形9. angular.js - $stateChangeSuccess事件在狀態跳轉的時候不執行?10. android - rxjava merge 返回Object對象數據如何緩存
