2014-01-10 2 views
0

Как проверить строку, содержащую специальные символы, такие как _ . , () &^% $ # @ ! * в моей строке? Я попытался создать валидатор регулярных выражений для проверки строки следующим образом.RegEx: Проверьте любые специальные символы в String

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/изменить регулярное выражение-к-Allow-в-и-английский-японско-символов) – brandonscript

ответ

1

Поскольку вы, вероятно, h дайте лучшее представление о том, чего вы не хотите разрешать, чем то, что вы хотите разрешить, используйте инвертированный набор символов, используя синтаксис [^].

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

Но обратите внимание, что на английском языке 'FULL STOP' (U+002E) иногда используется в именах. Ваш подход в черном списке запретил бы их. Поэтому подумайте о том, чтобы удалить его из приведенного выше кода.

Кроме того, 'SPACE' (U+0020) и 'HYPHEN-MINUS' (U+002D) используются в названиях на английском языке. Ваш подход в белом списке запретил бы их.

1

Я только что нашел некоторые примеры выражений RegExp для символов Unicode:

Regex для согласования все японского общего & незаурядного кандзи

`(4e00 – 9fcf)` 

~ The Big Kahuna!

([一-龯]) 

Regex для согласования Hirgana или катакана

([ぁ-んァ-ン]) 

и многое другое ...

регулярок-japanese.txt из terrancesnyder на GitHubGist: https://gist.github.com/terrancesnyder/1345094

более хороший ответ один: Regular expressions (regex) in Japanese

Смежные вопросы