這個問題在這里已經有了答案: String replaceAll 中的 Java 正則運算式:負面展望未按預期作業 (1 個回答) 43 分鐘前關閉。
我正在嘗試使用最短的代碼來匹配17以下測驗字串中的非芒果數字(在本例中):
mango:25;orange:17
使用以下否定前瞻的 JavaScript 正則運算式:
/(?!mango:)\d /
我認為這會匹配這樣就數字不具有mango:在他們面前。不知何故,它實際上匹配mango:前面的數字(25在這種情況下)。這是關于 RegExr的演示。
我糊涂了。
uj5u.com熱心網友回復:
改為使用負向后視
并將列:移出其中
/(?<!mango):(\d )/g
https://regex101.com/r/E8joGx/1
(?<!mango) Not preceded by "mango"
: Preceded by column
(\d ) Match one or more digits
(g Global)
因為不需要的詞“芒果”位于后面。所以在偽代碼中:(no "mango" behind):(One or more numbers)
“如何正確使用負前瞻”
這將是在你想要的情況下,即:匹配單詞后面沒有特定匹配。舉個例子:
您想匹配數量不為 0 的所有屬性
獼猴桃:0;芒果:25;橙色:17
這就是負面前瞻發揮作用的地方,因為“前瞻”:
/(\w ):(?!0;)/g
https://regex101.com/r/j28S3y/1
(\w ) Match character a-zA-Z0-9_ one or more time
: Followed by column
(?!0;) Not followed by "0;"
(g Global)
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/384936.html
標籤:javascript 正则表达式
上一篇:如何在reactv6中重定向
