一、帶小數點數字
public static bool IsNumber(string input) { string pattern = "^-?\\d+$|^(-?\\d+)(\\.\\d+)?$"; Regex regex = new Regex(pattern); return regex.IsMatch(input); }
二、只能數字
public static bool IsWholeNumber(string strNumber) { Regex g = new Regex(@"^[0-9]\d*$"); return g.IsMatch(strNumber); }
三、電話號或手機號
public static bool isPhoneNumber(string phoneNumber) { Regex g = new Regex(@"^(0[0-9]{2,3}\-)([2-9][0-9]{6,7})?(\-[0-9]{1,4})?$|(^(13[0-9]|15[0-9]|17[0-9]|18[0-9])\d{8}$)"); return g.IsMatch(phoneNumber); }
解析:
(1) ^(0[0-9]{2,3}\-):區號
^:開始標志
$:結束標志
[0-9]{2,3}:0到9之間的數字,出現2到3次
\-:轉義字符,轉義區號的連接符"-"
(2) ([2-9][0-9]{6,7})?
?:問號前面的數字匹配0次或1次,也就是懶惰匹配,最多匹配一次
+:匹配1次到無窮次
*:匹配0次到無窮次
四、其他
要做更精確地匹配,可以用[]
表示范圍,比如:
-
[0-9a-zA-Z\_]
可以匹配一個數字、字母或者下划線; -
[0-9a-zA-Z\_]+
可以匹配至少由一個數字、字母或者下划線組成的字符串,比如'a100'
,'0_Z'
,'Py3000'
等等; -
[a-zA-Z\_][0-9a-zA-Z\_]*
可以匹配由字母或下划線開頭,后接任意個由一個數字、字母或者下划線組成的字符串,也就是Python合法的變量; -
[a-zA-Z\_][0-9a-zA-Z\_]{0, 19}
更精確地限制了變量的長度是1-20個字符(前面1個字符+后面最多19個字符)。
A|B
可以匹配A或B,所以(P|p)ython
可以匹配'Python'
或者'python'
。
參考:
http://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/00143193331387014ccd1040c814dee8b2164bb4f064cff000