1. 程式人生 > >專案中使用的正則

專案中使用的正則

區號+座機號碼+分機號碼:regexp="^(0[0-9]{2,3}/-)?([2-9][0-9]{6,7})+(/-[0-9]{1,4})?$"

手機(中國移動手機號碼):regexp="^((/(/d{3}/))|(/d{3}/-))?13[456789]/d{8}|15[89]/d{8}"

所有手機號碼:regexp="^((/(/d{3}/))|(/d{3}/-))?13[0-9]/d{8}|15[89]/d{8}"(新添加了158,159兩個號段)

((/d{11})|^((/d{7,8})|(/d{4}|/d{3})-(/d{7,8})|(/d{4}|/d{3})-(/d{7,8})-(/d{4}|/d{3}|/d{2}|/d{1})|(/d{7,8})-(/d{4}|/d{3}|/d{2}|/d{1}))$)

匹配格式:
11位手機號碼
3-4位區號,7-8位直播號碼,1-4位分機號
如:12345678901、1234-12345678-1234

 

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)) 
正則表示式用於字串處理、表單驗證等場合,實用高效。現將一些常用的表示式收集於此,以備不時之需。 


匹配中文字元的正則表示式: [/u4e00-/u9fa5] 
評註:匹配中文還真是個頭疼的事,有了這個表示式就好辦了 

匹配雙位元組字元(包括漢字在內):[^/x00-/xff] 
評註:可以用來計算字串的長度(一個雙位元組字元長度計2,ASCII字元計1) 

匹配空白行的正則表示式:/n/s*/r 
評註:可以用來刪除空白行 

匹配HTML標記的正則表示式:<(/S*?)[^>]*>.*?<//1>|<.*? /> 
評註:網上流傳的版本太糟糕,上面這個也僅僅能匹配部分,對於複雜的巢狀標記依舊無能為力 

匹配首尾空白字元的正則表示式:^/s*|/s*$ 
評註:可以用來刪除行首行尾的空白字元(包括空格、製表符、換頁符等等),非常有用的表示式 

匹配Email地址的正則表示式:/w+([-+.]/w+)*@/w+([-.]/w+)*/./w+([-.]/w+)* 
評註:表單驗證時很實用 

匹配網址URL的正則表示式:[a-zA-z]+://[^/s]* 
評註:網上流傳的版本功能很有限,上面這個基本可以滿足需求 

匹配帳號是否合法(字母開頭,允許5-16位元組,允許字母數字下劃線):^[a-zA-Z][a-zA-Z0-9_]{4,15}$ 
評註:表單驗證時很實用 

匹配國內電話號碼:/d{3}-/d{8}|/d{4}-/d{7} 
評註:匹配形式如 0511-4405222 或 021-87888822 

匹配騰訊QQ號:[1-9][0-9]{4,} 
評註:騰訊QQ號從10000開始 

匹配中國郵政編碼:[1-9]/d{5}(?!/d) 
評註:中國郵政編碼為6位數字 

匹配身份證:/d{15}|/d{18} 
評註:中國的身份證為15位或18位 

匹配ip地址:/d+/./d+/./d+/./d+ 
評註:提取ip地址時有用 

匹配特定數字: 
^[1-9]/d*$ //匹配正整數 
^-[1-9]/d*$ //匹配負整數 
^-?[1-9]/d*$ //匹配整數 
^[1-9]/d*|0$ //匹配非負整數(正整數 + 0) 
^-[1-9]/d*|0$ //匹配非正整數(負整數 + 0) 
^[1-9]/d*/./d*|0/./d*[1-9]/d*$ //匹配正浮點數 
^-([1-9]/d*/./d*|0/./d*[1-9]/d*)$ //匹配負浮點數 
^-?([1-9]/d*/./d*|0/./d*[1-9]/d*|0?/.0+|0)$ //匹配浮點數 
^[1-9]/d*/./d*|0/./d*[1-9]/d*|0?/.0+|0$ //匹配非負浮點數(正浮點數 + 0) 
^(-([1-9]/d*/./d*|0/./d*[1-9]/d*))|0?/.0+|0$ //匹配非正浮點數(負浮點數 + 0) 
評註:處理大量資料時有用,具體應用時注意修正 

匹配特定字串: 
^[A-Za-z]+$ //匹配由26個英文字母組成的字串 
^[A-Z]+$ //匹配由26個英文字母的大寫組成的字串 
^[a-z]+$ //匹配由26個英文字母的小寫組成的字串 
^[A-Za-z0-9]+$ //匹配由數字和26個英文字母組成的字串 
^/w+$ //匹配由數字、26個英文字母或者下劃線組成的字串 
評註:最基本也是最常用的一些表示式 

匹配中文字元的正則表示式: [/u4e00-/u9fa5] 

匹配雙位元組字元(包括漢字在內):[^/x00-/xff] 

匹配空行的正則表示式:/n[/s| ]*/r 

匹配HTML標記的正則表示式:/<(.*)>.*<///1>|<(.*) //>/ 

匹配首尾空格的正則表示式:(^/s*)|(/s*$) 

匹配Email地址的正則表示式:/w+([-+.]/w+)*@/w+([-.]/w+)*/./w+([-.]/w+)* 

匹配網址URL的正則表示式:http://([/w-]+/.)+[/w-]+(/[/w- ./?%&=]*)? 


^/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-]+)+$ 



"^/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 
/^13/d{9}$/gi手機號正則表示式
public static bool IsValidMobileNo(string MobileNo)
{
   const string regPattern = @"^(130|131|132|133|134|135|136|137|138|139)/d{8}$";
   return Regex.IsMatch(MobileNo, regPattern);
}
正則表示式--驗證手機號碼:13[0-9]{9}
實現手機號前帶86或是+86的情況:^((/+86)|(86))?(13)/d{9}$
電話號碼與手機號碼同時驗證:(^(/d{3,4}-)?/d{7,8})$|(13[0-9]{9}) 
提取資訊中的網路連結:(h|H)(r|R)(e|E)(f|F) *= *('|")?(/w|//|//|/.)+('|"| *|>)?  
提取資訊中的郵件地址:/w+([-+.]/w+)*@/w+([-.]/w+)*/./w+([-.]/w+)*  
提取資訊中的圖片連結:(s|S)(r|R)(c|C) *= *('|")?(/w|//|//|/.)+('|"| *|>)?
提取資訊中的IP地址:(/d+)/.(/d+)/.(/d+)/.(/d+)    
提取資訊中的中國手機號碼:(86)*0*13/d{9}    
提取資訊中的中國固定電話號碼:(/(/d{3,4}/)|/d{3,4}-|/s)?/d{8}    
提取資訊中的中國電話號碼(包括移動和固定電話):(/(/d{3,4}/)|/d{3,4}-|/s)?/d{7,14}    
提取資訊中的中國郵政編碼:[1-9]{1}(/d+){5}    
提取資訊中的中國身份證號碼:/d{18}|/d{15}    
提取資訊中的整數:/d+    
提取資訊中的浮點數(即小數):(-?/d*)/.?/d+    
提取資訊中的任何數字 :(-?/d*)(/./d+)?  
提取資訊中的中文字串:[/u4e00-/u9fa5]*    
提取資訊中的雙位元組字串 (漢字):[^/x00-/xff]*

轉自:https://www.cnblogs.com/learningJAVA/p/6672160.html