"^\\d+$" //非負整數(正整數 + 0) "^[0-9]*[1-9][0-9]*$" //正整數 "^((-\\d+)|(0+))$" //非正整數(負整數 + 0) "^-[0-9]*[1-9][0-9]*$" //負整數 "^-?\\d+$" //整數 "^\\d+(\\.\\d+)?$" //非負浮點數(正浮點數 + 0) ---------------- \d+(\.\d+)?$ "^(([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 ---------------------------------------------------------------------------------- 匹配中文字符的正則表達式: [\u4e00-\u9fa5] 匹配雙字節(jié)字符(包括漢字在內):[^\x00-\xff] 應用:計算字符串的長度(一個雙字節(jié)字符長度計2,ASCII字符計1) String.prototype.len=function(){return this.replace([^\x00-\xff]/g,"aa").length;} 匹配空行的正則表達式:\n[\s| ]*\r 匹配HTML標記的正則表達式:/<(.*)>.*<\/\1>|<(.*) \/>/ 匹配首尾空格的正則表達式:(^\s*)|(\s*$) 應用:javascript中沒有像vbscript那樣的trim函數,我們就可以利用這個表達式來實現,如下: String.prototype.trim = function() { return this.replace(/(^\s*)|(\s*$)/g, ""); } 利用正則表達式分解和轉換IP地址: 下面是利用正則表達式匹配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("Not a valid IP address!") } } 不過上面的程序如果不用正則表達式,而直接用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)) 匹配Email地址的正則表達式:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)* 匹配網址URL的正則表達式:http://([\w-]+\.)+[\w-]+(/[\w- ./?%&=]*)? 利用正則表達式去除字串中重復的字符的算法程序:[注:此程序不正確,原因見本貼回復] var s="abacabefgeeii" var s1=s.replace(/(.).*\1/g,"$1") var re=new RegExp("["+s1+"]","g") var s2=s.replace(re,"") alert(s1+s2) //結果為:abcefgi 我原來在CSDN上發(fā)貼尋求一個表達式來實現去除重復字符的方法,最終沒有找到,這是我能想到的最簡單的實現方法。思路是使用后向引用取出包括重復的字符,再以重復的字符建立第二個表達式,取到不重復的字符,兩者串連。這個方法對于字符順序有要求的字符串可能不適用。 得用正則表達式從URL地址中提取文件名的javascript程序,如下結果為page1 s="http://www.9499.net/page1.htm" s=s.replace(/(.*\/){0,}([^\.]+).*/ig,"$2") alert(s) 利用正則表達式限制網頁表單里的文本框輸入內容: 用正則表達式限制只能輸入中文:onkeyup="value=value.replace(/[^\u4E00-\u9FA5]/g,'')" onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\u4E00-\u9FA5]/g,''))" 用正則表達式限制只能輸入全角字符: onkeyup="value=value.replace(/[^\uFF00-\uFFFF]/g,'')" onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\uFF00-\uFFFF]/g,''))" 用正則表達式限制只能輸入數字:onkeyup="value=value.replace(/[^\d]/g,'') "onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\d]/g,''))" 用正則表達式限制只能輸入數字和英文:onkeyup="value=value.replace(/[\W]/g,'') "onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\d]/g,''))" 正則表達式,相關鏈接 http://blog.csdn.net/laily/category/19548.aspx http://blog.csdn.net/laily/archive/2004/06/30/30525.aspx 微軟的正則表達式教程(五):選擇/編組和后向引用 http://blog.csdn.net/laily/archive/2004/06/30/30522.aspx 微軟的正則表達式教程(四):限定符和定位符 http://blog.csdn.net/laily/archive/2004/06/30/30517.aspx 微軟的正則表達式教程(三):字符匹配 http://blog.csdn.net/laily/archive/2004/06/30/30514.aspx 微軟的正則表達式教程(二):正則表達式語法和優(yōu)先權順序 http://blog.csdn.net/laily/archive/2004/06/30/30511.aspx 微軟的正則表達式教程(一):正則表達式簡介 http://blog.csdn.net/laily/archive/2004/06/30/30360.aspx 小程序大作為:高級查找/替換、正則表達式練習器、Javascript腳本程序調試器 http://blog.csdn.net/laily/archive/2004/06/24/25872.aspx 經典正則表達式 正則表達式,正規(guī)表達式,正則表達式匹配,正則表達式語法,模式匹配,正規(guī)表達式匹配 javascript正則表達式 ASP正則表達式 ASP.NET正則表達式 C#正則表達式 JSP正則表達式 PHP正則表達式 VB.NET正則表達式 VBSCript正則表達式編程 delphi正則表達式 jscript 利用正則表達式去除字串中重復的字符的算法程序: var s="abacabefgeeii" var s1=s.replace(/(.).*\1/g,"$1") var re=new RegExp("["+s1+"]","g") var s2=s.replace(re,"") alert(s1+s2) //結果為:abcefgi =============================== 如果var s = "abacabefggeeii" 結果就不對了,結果為:abeicfgg 正則表達式的能力有限 1.確認有效電子郵件格式 下面的代碼示例使用靜態(tài) Regex.IsMatch 方法驗證一個字符串是否為有效電子郵件格式。如果字符串包含一個有效的電子郵件地址,則 IsValidEmail 方法返回 true,否則返回 false,但不采取其他任何操作。您可以使用 IsValidEmail,在應用程序將地址存儲在數據庫中或顯示在 ASP.NET 頁中之前,篩選出包含無效字符的電子郵件地址。 [Visual Basic] Function IsValidEmail(strIn As String) As Boolean ' Return true if strIn is in valid e-mail format. Return Regex.IsMatch(strIn, ("^([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$") End Function [C#] bool IsValidEmail(string strIn) { // Return true if strIn is in valid e-mail format. return Regex.IsMatch(strIn, @"^([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$"); } 2.清理輸入字符串 下面的代碼示例使用靜態(tài) Regex.Replace 方法從字符串中抽出無效字符。您可以使用這里定義的 CleanInput 方法,清除掉在接受用戶輸入的窗體的文本字段中輸入的可能有害的字符。CleanInput 在清除掉除 @、-(連字符)和 .(句點)以外的所有非字母數字字符后返回一個字符串。 [Visual Basic] Function CleanInput(strIn As String) As String ' Replace invalid characters with empty strings. Return Regex.Replace(strIn, "[^\w\.@-]", "") End Function [C#] String CleanInput(string strIn) { // Replace invalid characters with empty strings. return Regex.Replace(strIn, @"[^\w\.@-]", ""); } 3.更改日期格式 以下代碼示例使用 Regex.Replace 方法來用 dd-mm-yy 的日期形式代替 mm/dd/yy 的日期形式。 [Visual Basic] Function MDYToDMY(input As String) As String Return Regex.Replace(input, _ "\b(?<month>\d{1,2})/(?<day>\d{1,2})/(?<year>\d{2,4})\b", _ "${day}-${month}-${year}") End Function [C#] String MDYToDMY(String input) { return Regex.Replace(input, "\\b(?<month>\\d{1,2})/(?<day>\\d{1,2})/(?<year>\\d{2,4})\\b", "${day}-${month}-${year}"); } Regex 替換模式 本示例說明如何在 Regex.Replace 的替換模式中使用命名的反向引用。其中,替換表達式 ${day} 插入由 (?<day>...) 組捕獲的子字符串。 有幾種靜態(tài)函數使您可以在使用正則表達式操作時無需創(chuàng)建顯式正則表達式對象,而 Regex.Replace 函數正是其中之一。如果您不想保留編譯的正則表達式,這將給您帶來方便 4.提取 URL 信息 以下代碼示例使用 Match.Result 來從 URL 提取協議和端口號。例如,“http://www.contoso.com:8080/letters/readme.html”將返回“http:8080”。 [Visual Basic] Function Extension(url As String) As String Dim r As New Regex("^(?<proto>\w+)://[^/]+?(?<port>:\d+)?/", _ RegexOptions.Compiled) Return r.Match(url).Result("${proto}${port}") End Function [C#] String Extension(String url) { Regex r = new Regex(@"^(?<proto>\w+)://[^/]+?(?<port>:\d+)?/", RegexOptions.Compiled); return r.Match(url).Result("${proto}${port}"); } ---------------------------------------------------------------------------------- 驗證是否含有^%&',;=?$\"等字符:“[^%&',;=?$\x22]+” 只能輸入漢字:“^[\u4e00-\u9fa5],{0,}$” 一次或多次 [\u4e00-\u9fa5]*$ 驗證Email地址:“^\w+[-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$” 驗證InternetURL:“^http://([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?$” 驗證電話號碼:“^(\(\d{3,4}\)|\d{3,4}-)?\d{7,8}$” 正確格式為:“XXXX-XXXXXXX”,“XXXX-XXXXXXXX”,“XXX-XXXXXXX”, “XXX-XXXXXXXX”,“XXXXXXX”,“XXXXXXXX” 驗證身份證號(15位或18位數字):“^\d{15}|\d{}18$” or ^[\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”。 ----------------------------------------------------------------------------------------------------- 一、驗證類 1、數字驗證內 1.1 整數 /^(- |\+)?\d+$/.test(str) 1.2 大于0的整數 (用于傳來的ID的驗證) /^\d+$/.test(str) 1.3 負整數的驗證 /^-\d+$/.test(str) 2、時間類 2.1 短時間,形如 (13:04:06) function isTime(str) { var a = str.match(/^(\d{1,2})(:)?(\d{1,2})\2(\d{1,2})$/); if (a == null) {alert('輸入的參數不是時間格式'); return false;} if (a[1]> 24 | | a[3]> 60 | | a[4]> 60) { alert("時間格式不對"); return false } return true; } 2.2 短日期,形如 (2003-12-05) function strDateTime(str) { var r = str.match(/^(\d{1,4})(- |\/)(\d{1,2})\2(\d{1,2})$/); if(r==null)return false; var d= new Date(r[1], r[3]-1, r[4]); return (d.getFullYear()==r[1]&&(d.getMonth()+1)==r[3]&&d.getDate()==r[4]); } 2.3 長時間,形如 (2003-12-05 13:04:06) function strDateTime(str) { var reg = /^(\d{1,4})(- |\/)(\d{1,2})\2(\d{1,2}) (\d{1,2}):(\d{1,2}):(\d{1,2})$/; var r = str.match(reg); if(r==null)return false; var d= new Date(r[1], r[3]-1,r[4],r[5],r[6],r[7]); return (d.getFullYear()==r[1]&&(d.getMonth()+1)==r[3]&&d.getDate()==r[4]&&d.getHours()==r[5]&&d.getMinutes()==r[6]&&d.getSeconds()==r[7]); } 2.4 只有年和月。形如(2003-05,或者2003-5) 2.5 只有小時和分鐘,形如(12:03) 3、表單類 3.1 所有的表單的值都不能為空 3.2 多行文本框的值不能為空。 3.3 多行文本框的值不能超過sMaxStrleng 3.4 多行文本框的值不能少于sMixStrleng 3.5 判斷單選框是否選擇。 3.6 判斷復選框是否選擇. 3.7 復選框的全選,多選,全不選,反選 3.8 文件上傳過程中判斷文件類型 4、字符類 4.1 判斷字符全部由a-Z或者是A-Z的字字母組成 4.2 判斷字符由字母和數字組成。 4.3 判斷字符由字母和數字,下劃線,點號組成.且開頭的只能是下劃線和字母 /^([a-zA-z_]{1})([\w]*)$/g.test(str) 4.4 字符串替換函數.Replace(); 5、瀏覽器類 5.1 判斷瀏覽器的類型 window.navigator.appName 5.2 判斷ie的版本 window.navigator.appVersion 5.3 判斷客戶端的分辨率 window.screen.height; window.screen.width; 6、結合類 6.1 email的判斷。 function ismail(mail) { return(new RegExp(/^\w+((-\w+) |(\.\w+))*\@[A-Za-z0-9]+((\. |-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/).test(mail)); } 6.2 手機號碼的驗證 6.3 身份證的驗證 function isIdCardNo(num) { if (isNaN(num)) {alert("輸入的不是數字!"); return false;} var len = num.length, re; if (len == 15) re = new RegExp(/^(\d{6})()?(\d{2})(\d{2})(\d{2})(\d{3})$/); else if (len == 18) re = new RegExp(/^(\d{6})()?(\d{4})(\d{2})(\d{2})(\d{3})(\d)$/); else {alert("輸入的數字位數不對!"); return false;} var a = num.match(re); if (a != null) { if (len==15) { var D = new Date("19"+a[3]+"/"+a[4]+"/"+a[5]); var B = D.getYear()==a[3]&&(D.getMonth()+1)==a[4]&&D.getDate()==a[5]; } else { var D = new Date(a[3]+"/"+a[4]+"/"+a[5]); var B = D.getFullYear()==a[3]&&(D.getMonth()+1)==a[4]&&D.getDate()==a[5]; } if (!B) {alert("輸入的身份證號 "+ a[0] +" 里出生日期不對!"); return false;} } return true; } 3.7 復選框的全選,多選,全不選,反選 全選 全選 3.8 文件上傳過程中判斷文件類型 沒有辦法屏蔽拷屏鍵, 不過有一種變態(tài)的方法可以不讓截屏, 就是不斷地清空剪貼板: 修正 3.8 文件上傳過程中判斷文件類型里所使用的正則表達式: 二、功能類 10,畫圖類,含餅、柱、矢量貝滋曲線 11,操縱客戶端注冊表類 12,DIV層相關(拖拽、顯示、隱藏、移動、增加) 13,TABLAE相關(客戶端動態(tài)增加行列,模擬進度條,滾動列表等) 14,各種 id=S style="LEFT: 0px; WIDTH: 392px; TOP: 0px; HEIGHT: 240px" height=240 width=392 classid="clsid:369303C2-D7AC-11D0-89D5-00A0C90833E6"> 寫注冊表: TABLAE相關(客戶端動態(tài)增加行列) 1.身份證嚴格驗證: 2.驗證IP地址 3.加sp1后還能用的無邊框窗口??! 電話號碼的驗證 要求: (1)電話號碼由數字、"("、")"和"-"構成 (2)電話號碼為3到8位 (3)如果電話號碼中包含有區(qū)號,那么區(qū)號為三位或四位 (4)區(qū)號用"("、")"或"-"和其他部分隔開 (5)移動電話號碼為11或12位,如果為12位,那么第一位為0 (6)11位移動電話號碼的第一位和第二位為"13" (7)12位移動電話號碼的第二位和第三位為"13" 根據這幾條規(guī)則,可以與出以下正則表達式: (^[0-9]{3,4}\-[0-9]{3,8}$) |(^[0-9]{3,8}$) |(^\([0-9]{3,4}\)[0-9]{3,8}$) |(^0{0,1}13[0-9]{9}$) 具有在輸入非數字字符不回顯的效果,即對非數字字符的輸入不作反應。 function numbersonly(field,event){ var key,keychar; if(window.event){ key = window.event.keyCode; } else if (event){ key = event.which; } else{ return true } keychar = String.fromCharCode(key); if((key == null) | |(key == 0) | |(key == 8) | |(key == 9) | |(key == 13) | |(key == 27)){ return true; } else if(("0123456789.").indexOf(keychar)> -1){ window.status = ""; return true; } else { window.status = "Field excepts numbers only"; return false; } }
如對本文有疑問,請?zhí)峤坏浇涣髡搲?,廣大熱心網友會為你解答!! 點擊進入論壇
Powered by 365建站網 RSS地圖 HTML地圖
copyright © 2013-2024 版權所有 鄂ICP備17013400號