2016-11-29 1 views
0

다른 @가 아닌 경우에만 @test와 일치하는 정규 표현식을 만드는 방법을 알아 냈습니다. 나는 부정적인 lookbehind와 솔루션을 가지고 있지만 기능은 JS에서 지원되지 않습니다. 부정적인 lookbehind없이 해결책이 있습니까? Ex. This @test should be a match. This @@test should not be a match. javascript에서 @@을 이스케이프 처리하는 부정적인 lookbehind

+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

lookbehind는 고정 된 문자 길이 여야합니다. 0과 1의 길이는 작동하지 않습니다. –

1

이외의 아무것도 일치하는 @Test 문자열의 시작 부분에있는 경우에도 작동 하나입니다 :

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

Regex101

1

당신은 부정적인 문자 그룹이 @test 이전에 제외 할 수

/[^@]@test/ 

줄의 시작 부분에 작동하지 않습니다,하지만 샘플 텍스트와 함께 작동합니다. 당신이 너무 행의 시작 부분에 대해 걱정할 필요가 있다면, 당신은이 작업을 수행 할 수 있습니다 : 이것은 그 앞에 약간의 비 @ 문자로 먼저 줄 것, 또는 @test@test 일치합니다

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

.

관련 문제