[英]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.