簡體   English   中英

regexp以匹配序列(如果不是以特定字符開頭和結尾)

[英]regexp to match sequence if not starting and ending with a specific character

在使用正則表達式時,我不太擅長找到適合我需要的正則表達式。如果在一個字符說[和另一個字符說]之間不包含foo這個詞,我需要將其匹配

 "[foo] foo" // I need to replace foo with bar
 // expected result : "[foo] bar" but not "[bar] bar"

如果不跟[ ],我知道如何匹配

 "foo] foo".replace(/foo(!?\])/g,"bar")

而且我也知道如何搭配它,如果它不是由前面 [

 " [foo foo".replace(/(\[)?foo/g,function(_0,_1) {
      return _1:_0?"bar"
 })

但是我不知道如何將它們放在一起。謝謝!

請嘗試使用此詞來匹配[和]之間的單詞

"[foo] foo".match(/\[.*?\]/g)

您需要以下正則表達式:

(?<!\[)foo(?!])

它對[負向后看,對]負向后看。

使用負前瞻,您可以使用以下正則表達式:

var repl = str.replace(/\bfoo\b(?![^\]\[]*\])/g, 'bar');

正則演示

(?![^\\]\\[]*\\])是否定的超前斷言。 這個斷言故障當它找到一個]沒有匹配[]上的方式,從而不匹配foo內部[...]

\\b用於單詞邊界。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM