RegEx:检查String中的任何特殊字符

时间:2014-01-10 06:34:17

标签: .net regex c++-cli

如何检查字符串中包含_ . , ( ) & ^ % $ # @ ! *等特殊字符的字符串?  我尝试创建一个正则表达式验证器来检查字符串,如下所示。

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

这是注册表格中的名称字段。它应该允许日文字符。但是我的RegEx只允许英文字符。我知道这是因为[a-zA-Z]。但是如何只检查特殊字符并留下日文或韩文字符?

2 个答案:

答案 0 :(得分:1)

我刚刚找到了一些Unicode字符的RegExp表达式示例:

正则表达式匹配所有日语普通&不常见的汉字

`(4e00 – 9fcf)` 

~The Big Kahuna!

([一-龯])

匹配Hirgana或Katakana的正则表达式

([ぁ-んァ-ン])

还有更多......

来自terrancesnyder的regex-japanese.txt在GitHubGist上:https://gist.github.com/terrancesnyder/1345094

还有一个好的回复:Regular expressions (regex) in Japanese

答案 1 :(得分:1)

由于您可能比想要允许的内容更好地了解您不希望允许的内容,因此请使用[^]语法使用反向字符集。

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

但请注意,英文'FULL STOP' (U+002E)有时会在名称中使用。你的黑名单方法会禁止它们。因此,请考虑从上面的代码中删除它。

此外,'SPACE' (U+0020)'HYPHEN-MINUS' (U+002D)在英文名称中使用。你的白名单方法会禁止它们。