[英]Match all numbers in regex except for phrase foo2020
在混亂的字符串中,例如:dfnjvqifoo2020o43e25w54p32n5qvto4325432543nvgn4325gn2020repw
我想匹配字符串中的所有數字,除了短語 foo2020
我試過 /(?<,foo)\d+/g 問題是 foo2020 中的 020 在不應該匹配時得到匹配,我知道這是因為 \d 表示匹配單個數字但我不知道如何獲得圍繞這個
您的正則表達式/(?<!foo)\d+/g
匹配任何一個或多個不直接以foo
的數字。 這意味着,如果最左邊的數字沒有緊跟在foo
之前,它將與這個正則表達式匹配。
您需要做的只是添加另一個限制:如果左邊有一個數字,則不要開始匹配數字,即添加(?<!\d)
,左側數字邊界構造。
/(?<!foo)(?<!\d)\d+/g
// ^^^^^^^
請參閱正則表達式演示。
注意兩個連續的lookbehinds, (?<?foo)(?<!\d)
在同一個 position 一個接一個地執行,這意味着如果當前的左邊有foo
或一個數字,則不會匹配地點。
如果你需要確保右邊沒有數字,append (?!\d)
,一個右手數字邊界結構,在\d+
模式之后。 此處不需要,但如果您需要在abc50def
中匹配50
而不是在abc500def
中匹配,則需要此負前瞻。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.