[regex] 단어 / 문자열을 제외하는 정규식

다음과 같은 정규식이 있습니다.

^/[a-z0-9]+$

이 같은 문자열과 일치 /hello하거나 /hello123.

그러나 /ignoremeand와 같은 두 문자열 값을 제외하고 싶습니다 /ignoreme2.

몇 가지 변형을 시도했지만 작동하지 않는 것 같습니다!

나의 최근 미약 한 시도는

^/(((?!ignoreme)|(?!ignoreme2))[a-z0-9])+$

어떤 도움을 주셔서 감사합니다 🙂



답변

또 다른 방법은 다음과 같습니다 ( 부정적 인 미리보기 사용 ).

^/(?!ignoreme|ignoreme2|ignoremeN)([a-z0-9]+)$ 

참고 : 캡처 식은 하나뿐입니다 ([a-z0-9]+).


답변

이것은해야합니다 :

^/\b([a-z0-9]+)\b(?<!ignoreme|ignoreme2|ignoreme3)

무시할 수있는 단어를 원하는만큼 추가 할 수 있습니다. 다음은 간단한 PHP 구현입니다.

$ignoredWords = array('ignoreme', 'ignoreme2', 'ignoreme...');

preg_match('~^/\b([a-z0-9]+)\b(?<!' . implode('|', array_map('preg_quote', $ignoredWords)) . ')~i', $string);


답변

두 단어를 모두 제외하려면 구성이 필요합니다.

^/(?!ignoreme$)(?!ignoreme2$)[a-z0-9]+$

이제 두 조건이 모두 일치 해야합니다 ( ignoremeignoreme2 는 허용 되지 않음 ).


답변