我們往往會在ASP.NET中遇到驗證字元或漢字的問題,在網上搜尋了一些好的例子和解決方案,列出來與大家共用.
驗證漢字,數字,字元其實可以用一個Regex就可以解決.
現貼出一個從網上找到的方法:
此文出處:http://www.cnblogs.com/flashicp/archive/2007/06/13/782355.html
1、一個Regex,只含有漢字、數字、字母、底線不能以底線開頭和結尾:
^(?!_)(?!.*?_$)[a-zA-Z0-9_/u4e00-/u9fa5]+$ 其中:
^ 與字串開始的地方匹配
(?!_) 不能以_開頭
(?!.*?_$) 不能以_結尾
[a-zA-Z0-9_/u4e00-/u9fa5]+ 至少一個漢字、數字、字母、底線
$ 與字串結束的地方匹配
放在程式裡前面加@,否則需要//進行轉義 @"^(?!_)(?!.*?_$)[a-zA-Z0-9_/u4e00-/u9fa5]+$"
(或者:@"^(?!_)/w*(?<!_)$" 或者 @" ^[/u4E00-/u9FA50-9a-zA-Z_]+$ " )
2、只含有漢字、數字、字母、底線,底線位置不限:
^[a-zA-Z0-9_/u4e00-/u9fa5]+$
3、由數字、26個英文字母或者底線組成的字串
^/w+$
4、2~4個漢字
@"^[/u4E00-/u9FA5]{2,4}$";
5、
^[/w-]+(/.[/w-]+)*@[/w-]+(/.[/w-]+)+$
用:(Abc)+ 來分析: XYZAbcAbcAbcXYZAbcAb
XYZAbcAbcAbcXYZAbcAb
6、
[^/u4E00-/u9FA50-9a-zA-Z_]
34555#5' -->34555#5'
[/u4E00-/u9FA50-9a-zA-Z_] eiieng_89_ ---> eiieng_89_
_';'eiieng_88&*9_ --> _';'eiieng_88&*9_
_';'eiieng_88_&*9_ --> _';'eiieng_88_&*9_
public bool RegexName(string str)
{
bool flag=Regex.IsMatch(str,@"^[a-zA-Z0-9_/u4e00-/u9fa5]+$");
return flag;
}
Regex reg=new Regex("^[a-zA-Z_0-9]+$");
if(reg.IsMatch(s))
{
//符合規則
}
else
{
//存在非法字元
}