2016-11-29 44 views
0

我正在計算如何創建僅在與其他@不匹配時匹配@test的正則表達式。我有一個解決方案,負向後視,但功能不支持JS。有沒有負面後顧之憂的解決方案? Ex. This @test should be a match. This @@test should not be a match. 在javascript中轉義爲@@的負面後視圖

+0

你想用別的東西替換匹配的文本嗎? –

回答

0

怎麼樣一個否定字符類。

/(?:[^@]|^)@test/ 
  • [^@]比賽以外的任何其他一個@

"This @@test should not be a match".match(/(?:[^@]|^)@test/) 
// null 
"This @test should not be a match".match(/(?:[^@]|^)@test/) 
// [" @test"] 
+0

只要該行不以'@ test'開始。 –

+1

@SunnyPatel我編輯了答案。希望它現在好了 – nu11p01n73R

+0

一個倒序必須是一個固定的字符長度。 0和1的長度不起作用。 –

1

這裏是一個工程就算是@Test在字符串的開頭:

(?:^|[^@])@test 

Regex101

1

您可以用負字符組前@test排除:

/[^@]@test/ 

這將在該行的開頭不起作用,但會與樣品文本。如果你需要擔心該行的開頭也一樣,你可以這樣做:

/(^|[^@])@test/ 

這將匹配@test在行的第一件事情,或者@test與它前面一些非@字符。