如何检查字符串中包含_ . , ( ) & ^ % $ # @ ! *
等特殊字符的字符串?
我尝试创建一个正则表达式验证器来检查字符串,如下所示。
bool isOk = Regex::IsMatch(firstname, "^[a-zA-Z]+$");
这是注册表格中的名称字段。它应该允许日文字符。但是我的RegEx只允许英文字符。我知道这是因为[a-zA-Z]
。但是如何只检查特殊字符并留下日文或韩文字符?
答案 0 :(得分:1)
我刚刚找到了一些Unicode字符的RegExp表达式示例:
正则表达式匹配所有日语普通&不常见的汉字
`(4e00 – 9fcf)`
~The Big Kahuna!
([一-龯])
匹配Hirgana或Katakana的正则表达式
([ぁ-んァ-ン])
还有更多......
来自terrancesnyder的regex-japanese.txt在GitHubGist上:https://gist.github.com/terrancesnyder/1345094
答案 1 :(得分:1)
由于您可能比想要允许的内容更好地了解您不希望允许的内容,因此请使用[^]语法使用反向字符集。
bool isOk = Regex::IsMatch(firstname, "^[^_\\.,\\(\\)&^%$#@!\\*]+$");
但请注意,英文'FULL STOP' (U+002E)有时会在名称中使用。你的黑名单方法会禁止它们。因此,请考虑从上面的代码中删除它。
此外,'SPACE' (U+0020)和'HYPHEN-MINUS' (U+002D)在英文名称中使用。你的白名单方法会禁止它们。