2014-01-10 4 views
0

_ . , () &^% $ # @ ! *과 같은 특수 문자가 포함 된 문자열을 내 문자열로 확인하는 방법은 무엇입니까? 다음과 같이 문자열 검사를 위해 정규식 검사기를 만들려고했습니다.RegEx : 문자열의 특수 문자 확인

bool isOk = Regex::IsMatch(firstname, "^[a-zA-Z]+$"); 

이것은 등록 양식의 이름 필드입니다. 그것은 일본어 문자를 허용해야합니다. 하지만 RegEx는 영어 문자 만 허용합니다. 나는 이것이 [a-zA-Z]이기 때문에 이것을 안다. 하지만 특수 문자 만 확인하고 일본어 또는 한국어 문자를 남기는 방법은 무엇입니까?

+1

도움이 될만한 http://www.regular-expressions.info/unicode.html –

+0

[RegEx를 변경하여 영어와 일본어를 모두 허용 할 수 있음] (http://stackoverflow.com/questions/15151230)/regex-to-both-for-both-english-japanese 문자) – brandonscript

답변

1

아마도 h 당신이 허용하기를 원하지 않는 것보다 더 좋은 아이디어가 있다면, [^] 구문을 사용하여 거꾸로 된 문자 세트를 사용하십시오.

bool isOk = Regex::IsMatch(firstname, "^[^_\\.,\\(\\)&^%$#@!\\*]+$"); 

영어로는 'FULL STOP' (U+002E)이 때때로 이름으로 사용된다는 점에 유의하십시오. 귀하의 블랙리스트 접근법은 그들을 금지합니다. 따라서 위 코드에서 제거하는 것이 좋습니다.

또한 'SPACE' (U+0020)'HYPHEN-MINUS' (U+002D)은 영어 이름으로 사용됩니다. 화이트리스트 접근 방식으로 허용되지 않습니다.

1

난 그냥 유니 코드 문자를 정규식 표현의 예를 발견 :

정규식을 모두 일본어 일반 & 드문 한자

`(4e00 – 9fcf)` 

~ 빅 카 후나 일치를 위해!

([一-龯]) 

정규식 GitHubGist에 terrancesnyder에서 Hirgana 또는 가타카나

([ぁ-んァ-ン]) 

그리고 더 많은 ...

정규식 - japanese.txt 일치를위한 : https://gist.github.com/terrancesnyder/1345094

한 좋은 답변을 더 : Regular expressions (regex) in Japanese