[regex] 단어 / 문자열을 제외하는 정규식
다음과 같은 정규식이 있습니다.
^/[a-z0-9]+$
이 같은 문자열과 일치 /hello
하거나 /hello123
.
그러나 /ignoreme
and와 같은 두 문자열 값을 제외하고 싶습니다 /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]+$
이제 두 조건이 모두 일치 해야합니다 ( ignoreme 및 ignoreme2 는 허용 되지 않음 ).