예를 들어 정규식이 있습니다 (ma|(t){1})
. 일치 ma
하고 일치 t
하지 않습니다 bla
.
나는 정규 표현식을 부정하는 것이이 일치해야합니다 bla
하지 ma
과 t
, 이 정규식에 뭔가를 추가하여 . 나는 쓸 수 있다는 것을 알고 bla
있지만 실제 정규식은 더 복잡합니다.
답변
부정적인 둘러보기 사용 : (?!
pattern
)
긍정적 인 룩 어라운드를 사용하여 패턴이 일치하는지 확인할 수 있습니다. 부정적 룩 어라운드는 그 반대입니다. 패턴이 일치하지 않는다고 주장하는 데 사용됩니다. 어떤 맛은 단언을 지원합니다. 일부는 lookbehind 등에 제한을 둡니다.
regular-expressions.info에 대한 링크
또한보십시오
- CamelCase를 Java에서 사람이 읽을 수있는 이름으로 어떻게 변환합니까?
- 문자열을 포함하지 않는 모든 문자열에 대한 정규식?
- 다른 특정 하위 문자열이 뒤 따르지 않는 하위 문자열과 일치하는 정규식입니다.
더 많은 예
이것들은 장난감 문제에 대한 정규식 솔루션을 연습으로 제시하려는 시도입니다. 둘러보기를 사용할 수있는 다양한 방법 (중첩, 캡처에 사용 등)을 배우려는 경우 교육적이어야합니다.
답변
정규식과 완전히 일치하는 문자열 만 허용하지 않는다고 가정하면 (즉, mmbla
괜찮지 만 mm
그렇지 않습니다) 원하는 것은 다음과 같습니다.
^(?!(?:m{2}|t)$).*$
(?!(?:m{2}|t)$)
부정적 예측입니다 . 그것은 “다음 몇 문자입니다 현재 위치로부터 개시라고 하지 mm
나 t
, 문자열의 끝 하였다.” 시작 ^
부분 의 시작 앵커 ( )는 문자열의 시작 부분에 미리보기가 적용되도록합니다. 성공하면는 .*
계속 진행하여 문자열을 소비합니다.
참고로 Java의 matches()
방법을 사용 하는 경우 the ^
및 final이 실제로 필요 $
하지는 않지만 해를 끼치 지 않습니다. 그러나 $
내부 예측이 필요합니다.
답변
\b(?=\w)(?!(ma|(t){1}))\b(\w*)
이것은 주어진 정규식에 대한 것입니다.
\ b는 단어 경계를 찾는 것입니다.
긍정적 인 전망 (? = \ w)은 공백을 피하기 위해 여기에 있습니다.
원래 정규식에 대한 부정적인 전망은 일치를 방지하는 것입니다.
마지막으로 (\ w *)는 남은 모든 단어를 잡는 것입니다.
단어를 보관할 그룹은 그룹 3입니다
. 하위 문자열이
단순 ^ (?! (?: m {2} | t) $) 와 일치하므로 단순 (?! 패턴)은 작동하지 않습니다 . * $는 세분성이 전체 라인이므로 작동하지 않습니다.
답변
laravel을 사용하는 경우 이것을 적용하십시오.
Laravel에는 검증중인 필드가 주어진 정규 표현식과 일치하지 않아야하는 not_regex가 있습니다. preg_match
내부적으로 PHP 기능을 사용합니다 .
'email' => 'not_regex:/^.+$/i'
답변
