정규표현식에 관하여 - 조언 부탁드립니다.

maindb의 이미지

정말 환장하겠네요.
레퍼런스와 구글링 하면서 이렇게 저렇게 해보고 있는데
당췌 힘드네요.

문제는... 특수문자의 구분입니다.
php 에서 특수문자의 입력을 잡아내고 싶습니다.

한글,영문,숫자는 되지만 특수문자는 하나라도 있으면
안된다는 조건을 만족하기 위한 정규표현식을 만들려면
어떻게 해야 할까요?

조언 부탁드립니다.

mr.lee의 이미지

일단 어떤 특수문자를 말하는지 모르겠군요.

이를테면 키보드에서 입력가능한 특수문자만 일컫는것인지...

아니면, 입력될때의 언어코드에서(utf-8혹은 euc-kr등등..) 에서 한글, 영문, 숫자를 제외한 나머지 모든 문자를 일컫는 것인지...

전자같으면 정규표현식으로 구현해도 무방하겠지만 후자같으면 그 갯수가 워낙 많을것이므로 프로그램적으로 구현하셔야 할 것 같으네요. (코드값의 범위를 이용하는 방식이 좋지 않을까 싶군요)

전자의 방식같으면..

대충 의사코드적으로 의미만 전달한다면,

string S = "입력문자열"
string Regex = "[*^=.]" // 원하는 모든 특수문자를 [] 속에 열거
// [] 안에서는 '^'나(맨첨에올때) '-' 를 제외하고는 모두 일반문자 취급됨
if (regexMatch(S, Regex) == true) {
   cout << "특수문자 있음" << endl;
}

뭐 이러면 될것입니다만,

음, 너무 기본적인 답이었나 모르겠군요. 아마 이렇게는 해보셨을것 같습니다만.

ssehoony의 이미지

$reg = "[!@#$%^&*()_+|\-=\\\';\\":/.,?><\[\]\{\}`~]"

위 처럼 대괄호 [ ] 안에 특수문자를 나열하세요.

이런건 정규표현식 조금만 공부해도 알 수 있는건데...
이런 답변을 원하시는게 아닐 수도 있겠네요.

쿠크다스의 이미지

제가 php를 한번도 안 써봐서 잘 모르겠지만,
특수문자에 해당하는 문자클래스를 쓰면 되지 않을까요?

grep같으면,
grep [[:punct:]] test_file
이렇게요.
위에서 [:punct:]가 문자클래스입니다.

과자가 아닙니다.
cuckoo dozen, 즉.12마리의 뻐꾸기란 뜻입니다.