정규식 preg_match 조건
본문
$tmp ="abc|def++|ghi";
preg_match("/\bdef\b/i",$tmp)
위 조건으로는 'def'값이 있기 때문에 매칭됩니다. 하지만 저는 '|'기호 사이에 있는 값에서 순수하게 'def'값일때만 매칭하고 싶습니다. 즉 'def++'은 매칭되지 않았으면 합니다.
정규식을 어떻게 짜야 할까요?
조건 :
-찾으려는 문자열이 기호가 없는 순수 문자여야함
-문자 앞뒤로 '|'가 붙거나 앞이나 뒤에 한곳에는 반드시 있어야 함
가능할까요? 두번째 조건때문에 불가능할까요?
+++공부하다보니 다음과 같은 정규식으로 좁혀졌는데요,
(\|\b[a-z]+\b)$|^(\b[a-z]+\b\|)|(\|\b[a-z]+\b\|)
이보다 더 줄일 수 있을까요??
답변 1
이게 원하시는건지 모르겠지만
다음 패턴을 사용해 테스트해 보시죠.
$tmp ="|abcz|def|ghi";
$pattern = "#(\|?\b[a-z]+\b\|?){3}$#i";
if(preg_match($pattern, $tmp)) echo "OK";
else echo "No";
답변을 작성하시기 전에 로그인 해주세요.