원하는 패턴은 다음과 같습니다 ( rubular.com에서 확인 ).
^[a-zA-Z0-9_.-]*$
설명:
^
라인 앵커의 시작입니다.
$
라인 앵커의 끝입니다.
[...]
문자 클래스 정의입니다.
*
"0 개 이상의"반복
리터럴 대시 -
는 문자 클래스 정의의 마지막 문자입니다. 그렇지 않으면 다른 의미 (예 : 범위)를 갖습니다. 는 .
또한 문자 클래스 정의 외부에서 다른 의미를 갖지만 내부에서는 리터럴 일뿐입니다..
참고 문헌
PHP에서
다음은이 패턴을 사용하는 방법을 보여주는 스 니펫입니다.
<?php
$arr = array(
'screen123.css',
'screen-new-file.css',
'screen_new.js',
'screen new file.css'
);
foreach ($arr as $s) {
if (preg_match('/^[\w.-]*$/', $s)) {
print "$s is a match\n";
} else {
print "$s is NO match!!!\n";
};
}
?>
위의 인쇄물 ( ideone.com에서 볼 수 있음 ) :
screen123.css is a match
screen-new-file.css is a match
screen_new.js is a match
screen new file.css is NO match!!!
\w
대신 사용하면 패턴이 약간 다릅니다 . "단어 문자"의 문자 클래스입니다.
API 참조
사양에 대한 참고 사항
이것은 귀하의 사양을 따르는 것 같지만 .....
, 등과 같은 것과 일치 할 수도 있고 원하는 것이 아닐 수도 있습니다. 일치시킬 패턴을 더 구체적으로 지정할 수 있다면 정규식이 약간 더 복잡해집니다.
위의 정규식은 빈 문자열과도 일치합니다. 하나 이상의 문자가 필요한 경우 반복을 위해 (0 +
개 이상) 대신 *
(1 개 이상)을 사용합니다.
어쨌든 사양을 더 명확히 할 수 있지만 (정규식 질문을 할 때 항상 도움이 됨) 위의 정보가 주어지면 패턴을 직접 작성하는 방법을 배울 수도 있습니다.