天天看點

C# 常用正責表達式

"^\d+$" //非負整數(正整數 + 0) 

"^[0-9]*[1-9][0-9]*$" //正整數 

"^((-\d+)|(0+))$" //非正整數(負整數 + 0) 

"^-[0-9]*[1-9][0-9]*$" //負整數 

"^-?\d+$" //整數 

"^\d+(\.\d+)?$" //非負浮點數(正浮點數 + 0) 

"^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$" //正浮點數 

"^((-\d+(\.\d+)?)|(0+(\.0+)?))$" //非正浮點數(負浮點數 + 0) 

"^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$" //負浮點數 

"^(-?\d+)(\.\d+)?$" //浮點數 

"^[a-za-z]+$" //由26個英文字母組成的字元串 

"^[a-z]+$" //由26個英文字母的大寫組成的字元串 

"^[a-z]+$" //由26個英文字母的小寫組成的字元串 

"^[a-za-z0-9]+$" //由數字和26個英文字母組成的字元串 

"^\w+$" //由數字、26個英文字母或者下劃線組成的字元串 

"^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$" //email位址 

"^[a-za-z]+://(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\s*)?$" //url 

/^(d{2}|d{4})-((0([1-9]{1}))|(1[1|2]))-(([0-2]([1-9]{1}))|(3[0|1]))$/ // 年-月-日 

/^((0([1-9]{1}))|(1[1|2]))/(([0-2]([1-9]{1}))|(3[0|1]))/(d{2}|d{4})$/ // 月/日/年 

"^([w-.]+)@(([[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.)|(([w-]+.)+))([a-za-z]{2,4}|[0-9]{1,3})(]?)$" //emil 

"(d+-)?(d{4}-?d{7}|d{3}-?d{8}|^d{7,8})(-d+)?" //電話号碼 

"^(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5])$" //ip位址

yyyy-mm-dd基本上把閏年和2月等的情況都考慮進去了 

^((((1[6-9]|[2-9]\d)\d{2})-(0?[13578]|1[02])-(0?[1-9]|[12]\d|3[01]))|(((1[6-9]|[2-9]\d)\d{2})-(0?[13456789]|1[012])-(0?[1-9]|[12]\d|30))|(((1[6-9]|[2-9]\d)\d{2})-0?2-(0?[1-9]|1\d|2[0-8]))|(((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))-0?2-29-))$

c#正規表達式 

圖檔 src[^>]*[^/].(?:jpg|bmp|gif)(?:\"|\') 

中文 ^([\u4e00-\u9fa5]+|[a-za-z0-9]+)$ 

網址 "\<a.+?href=['""](?!http\:\/\/)(?!mailto\:)(?>foundanchor>[^'"">]+?)[^>]*?\>"

比對中文字元的正規表達式: [\u4e00-\u9fa5]

比對雙位元組字元(包括漢字在内):[^\x00-\xff]

比對空行的正規表達式:\n[\s| ]*\r

比對html标記的正規表達式:/<(.*)>.*<\/\1>|<(.*) \/>/

比對首尾空格的正規表達式:(^\s*)|(\s*$)(像vbscript那樣的trim函數)

比對email位址的正規表達式:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*

--------------------------------------------------------------------------- 

以下是例子:

利用正規表達式限制網頁表單裡的文本框輸入内容:

用正規表達式限制隻能輸入中文:onkeyup="value=value.replace(/[^\u4e00-\u9fa5]/g,'')" onbeforepaste="clipboarddata.setdata('text',clipboarddata.getdata('text').replace(/[^\u4e00-\u9fa5]/g,''))"

1.用正規表達式限制隻能輸入全角字元: onkeyup="value=value.replace(/[^\uff00-\uffff]/g,'')" onbeforepaste="clipboarddata.setdata('text',clipboarddata.getdata('text').replace(/[^\uff00-\uffff]/g,''))"

2.用正規表達式限制隻能輸入數字:onkeyup="value=value.replace(/[^\d]/g,'') "onbeforepaste="clipboarddata.setdata('text',clipboarddata.getdata('text').replace(/[^\d]/g,''))"

3.用正規表達式限制隻能輸入數字和英文:onkeyup="value=value.replace(/[\w]/g,'') "onbeforepaste="clipboarddata.setdata('text',clipboarddata.getdata('text').replace(/[^\d]/g,''))"

4.計算字元串的長度(一個雙位元組字元長度計2,ascii字元計1)

string.prototype.len=function(){return this.replace([^\x00-\xff]/g,"aa").length;}

5.javascript中沒有像vbscript那樣的trim函數,我們就可以利用這個表達式來實作,如下:

string.prototype.trim = function() 

return this.replace(/(^\s*)|(\s*$)/g, ""); 

}

利用正規表達式分解和轉換ip位址:

6.下面是利用正規表達式比對ip位址,并将ip位址轉換成對應數值的javascript程式:

function ip2v(ip) 

re=/(\d+)\.(\d+)\.(\d+)\.(\d+)/g //比對ip位址的正規表達式 

if(re.test(ip)) 

return regexp.$1*math.pow(255,3))+regexp.$2*math.pow(255,2))+regexp.$3*255+regexp.$4*1 

else 

throw new error("不是一個正确的ip位址!") 

不過上面的程式如果不用正規表達式,而直接用split函數來分解可能更簡單,程式如下:

var ip="10.100.20.168" 

ip=ip.split(".") 

alert("ip值是:"+(ip[0]*255*255*255+ip[1]*255*255+ip[2]*255+ip[3]*1))

隻能輸入數字:"^[0-9]*$"。

隻能輸入n位的數字:"^\d{n}$"。

隻能輸入至少n位的數字:"^\d{n,}$"。

隻能輸入m~n位的數字:。"^\d{m,n}$"

隻能輸入零和非零開頭的數字:"^(0|[1-9][0-9]*)$"。

隻能輸入有兩位小數的正實數:"^[0-9]+(.[0-9]{2})?$"。

隻能輸入有1~3位小數的正實數:"^[0-9]+(.[0-9]{1,3})?$"。

隻能輸入非零的正整數:"^\+?[1-9][0-9]*$"。

隻能輸入非零的負整數:"^\-[1-9][]0-9"*$。

隻能輸入長度為3的字元:"^.{3}$"。

隻能輸入由26個英文字母組成的字元串:"^[a-za-z]+$"。

隻能輸入由26個大寫英文字母組成的字元串:"^[a-z]+$"。

隻能輸入由26個小寫英文字母組成的字元串:"^[a-z]+$"。

隻能輸入由數字和26個英文字母組成的字元串:"^[a-za-z0-9]+$"。

隻能輸入由數字、26個英文字母或者下劃線組成的字元串:"^\w+$"。

驗證使用者密碼:"^[a-za-z]\w{5,17}$"正确格式為:以字母開頭,長度在6~18之間,隻能包含字元、數字和下劃線。

驗證是否含有^%&',;=?$\"等字元:"[^%&',;=?$\x22]+"。

隻能輸入漢字:"^[\u4e00-\u9fa5]{0,}$"

驗證email位址:"^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$"。

驗證interneturl:"^http://([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?$"。

驗證電話号碼:"^(\(\d{3,4}-)|\d{3.4}-)?\d{7,8}$"正确格式為:"xxx-xxxxxxx"、"xxxx-xxxxxxxx"、"xxx-xxxxxxx"、"xxx-xxxxxxxx"、"xxxxxxx"和"xxxxxxxx"。

驗證身份證号(15位或18位數字):"^\d{15}|\d{18}$"。

驗證一年的12個月:"^(0?[1-9]|1[0-2])$"正确格式為:"01"~"09"和"1"~"12"。

驗證一個月的31天:"^((0?[1-9])|((1|2)[0-9])|30|31)$"正确格式為;"01"~"09"和"1"~"31"。

歡迎加群互相學習,共同進步。qq群:ios: 58099570 | android: 330987132 | go:217696290 | python:336880185 | 做人要厚道,轉載請注明出處!