http://www.cnblogs.com/rubylouvre/archive/2010/03/09/1681222.html http://www.cnblogs.com/tylerdonet/p/4262251.html
?
//正整數 /^[0-9]*[1-9][0-9]*$/; //負整數 /^-[0-9]*[1-9][0-9]*$/; //正浮點數 /^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$/; //負浮點數 /^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$/; //浮點數 /^(-?\d+)(\.\d+)?$/; //email地址 /^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$/; //url地址 /^[a-zA-z]+://(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\S*)?$/; 或:^http:\/\/[A-Za-z0-9]+\.[A-Za-z0-9]+[\/=\?%\-&_~`@[\]\':+!]*([^<>\"\"])*$ //年/月/日(年-月-日、年.月.日) /^(19|20)\d\d[- /.](0[1-9]|1[012])[- /.](0[1-9]|[12][0-9]|3[01])$/; //匹配中文字符 /[\u4e00-\u9fa5]/; //匹配帳號是否合法(字母開頭,允許5-10字節,允許字母數字下劃線) /^[a-zA-Z][a-zA-Z0-9_]{4,9}$/; //匹配空白行的正則表達式 /\n\s*\r/; //匹配中國郵政編碼 /[1-9]\d{5}(?!\d)/; //匹配身份證 /\d{15}|\d{18}/; //匹配國內電話號碼 /(\d{3}-|\d{4}-)?(\d{8}|\d{7})?/; //匹配IP地址 /((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)/; //匹配首尾空白字符的正則表達式 /^\s*|\s*$/; //匹配HTML標記的正則表達式 < (\S*?)[^>]*>.*?|< .*? />; //sql 語句 ^(select|drop|delete|create|update|insert).*$ //提取信息中的網絡鏈接 (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} //提取信息中的中國郵政編碼 [1-9]{1}(\d+){5} //提取信息中的浮點數(即小數) (-?\d*)\.?\d+ //提取信息中的任何數字 (-?\d*)(\.\d+)? //電話區號 ^0\d{2,3}$ //騰訊 QQ 號 ^[1-9]*[1-9][0-9]*$ //帳號(字母開頭,允許 5-16 字節,允許字母數字下劃線) ^[a-zA-Z][a-zA-Z0-9_]{4,15}$ //中文、英文、數字及下劃線 ^[\u4e00-\u9fa5_a-zA-Z0-9]+$
?
現在已經沒有研究正則表達式原理,現在只想在網上找過來看看了,下面的都是來自別人的博客。 來自:http://www.cnblogs.com/tylerdonet/archive/2013/03/24/2979323.html 1.正則表達式 整數 ^[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)2.另外一個版本 "^(([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+)* 匹配網址URL的正則表達式:http://([\w-]+\.)+[\w-]+(/[\w- ./?%&=]*)? --------------------------------------------------------------------------- 以下是例子: 利用正則表達式限制網頁表單里的文本框輸入內容: 用正則表達式限制只能輸入中文:οnkeyup="value=value.replace(/[^\u4E00-\u9FA5]/g,'')" onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\u4E00-\u9FA5]/g,''))" 1.用正則表達式限制只能輸入全角字符: οnkeyup="value=value.replace(/[^\uFF00-\uFFFF]/g,'')" onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\uFF00-\uFFFF]/g,''))" 2.用正則表達式限制只能輸入數字:οnkeyup="value=value.replace(/[^\d]/g,'') "onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\d]/g,''))" 3.用正則表達式限制只能輸入數字和英文:οnkeyup="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)) 3.這位博友很細心把html代碼也貼出來了 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Test</title> <script type="text/javascript" language="javascript" src="jquery.js"></script> <script type="text/javascript" language="javascript" > function validata(){ if($("#username").val()==""){ document.write("請輸入名字"); return false; } if($("#password").val()==""){ document.write("請輸入密碼"); return false; } if($("#telephone").val()==""){ document.write("請輸入電話號碼"); } if($("#email").val()==""){ $("#email").val("shuangping@163.com"); } } function isInteger(obj){ reg=/^[-+]?\d+$/; if(!reg.test(obj)){ $("#test").html("<b>Please input correct figures</b>"); }else{ $("#test").html(""); } } function isEmail(obj){ reg=/^\w{3,}@\w+(\.\w+)+$/; if(!reg.test(obj)){ $("#test").html("<b>請輸入正確的郵箱地址</b>"); }else{ $("#test").html(""); } } function isString(obj){ reg=/^[a-z,A-Z]+$/; if(!reg.test(obj)){ $("#test").html("<b>只能輸入字符</b>"); }else{ $("#test").html(""); } } function isTelephone(obj){ reg=/^(\d{3,4}\-)?[1-9]\d{6,7}$/; if(!reg.test(obj)){ $("#test").html("<b>請輸入正確的電話號碼!</b>"); }else{ $("#test").html(""); } } function isMobile(obj){ reg=/^(\+\d{2,3}\-)?\d{11}$/; if(!reg.test(obj)){ $("#test").html("請輸入正確移動電話"); }else{ $("#test").html(""); } } function isUri(obj){ reg=/^http:\/\/[a-zA-Z0-9]+\.[a-zA-Z0-9]+[\/=\?%\-&_~`@[\]\':+!]*([^<>\"\"])*$/; if(!reg.test(obj)){ $("#test").html($("#uri").val()+"請輸入正確的inernet地址"); }else{ $("#test").html(""); } } //document加載完畢執行 $(document).ready(function() { // do something here //隔行換色功能 $("p").each(function(i){ this.style.color=['red','green','blue','black'][i%2] }); //eq(2)獲取$("p")集合的第3個元素 $("p").eq(2).click(function(){$("#display").css("color","blue")}); //所有test中的p都附加了樣式"over"。 $("#test>p").addClass("over"); //test中的最后一個p附加了樣式"out"。 $("#test p:last").addClass("out"); //選擇同級元素還沒看懂 //$('#faq').find('dd').hide().end().find('dt').click(function() //選擇父級元素 $("a").hover( function(){$(this).parents("p").addClass("out")}, function(){$(this).parents("p").removeClass("out")}) //hover鼠標懸停效果,toggle每次點擊時切換要調用的函數 , //trigger(eventtype): 在每一個匹配的元素上觸發某類事件, //bind(eventtype,fn),unbind(eventtype): 事件的綁定與反綁定從每一個匹配的元素中(添加)刪除綁定的事件。 //方法的連寫 $("#display").hover(function(){ $(this).addClass("over"); },function(){ $(this).removeClass("over"); }) .click(function(){alert($("#display").text())}); if($.browser.msie){//判斷瀏覽器,若是ie則執行下面的功能 //聚焦 $("input[@type=text],textarea,input[@type=password]") .focus(function(){$(this).css({background:"white",border:"1px solid blue"})}) //也可以這樣連著寫, //.blur(function(){$(this).css({background:"white",border:"1px solid black"})}) //失去焦點 //css樣式可以通過addClass()來添加 $("input[@type=text],textarea,input[@type=password]") .blur(function(){$(this).css({background:"white",border:"1px solid black"});}); } }); </script> <style type="text/css"> .over{ font-size:large; font-style:italic; } .out{ font-size:small; } </style> </head> <body > <div id="display">demo</div> <div id="test"> <p>adfa<a>dfasfa</a>sdfasdf</p> <p>adfadfasfasdfasdf</p> <p>adfadfasfasdfasdf</p> <p>adfadfasfasdfasdf</p> </div> <form id="theForm"> isString<div><input type="text" id="username" οnblur="isString(this.value)"/></div> isInteger<div><input type="text" id="password" οnblur="isInteger(this.value)"/></div> isTelephone<div><input type="text" id="telephone" οnblur="isTelephone(this.value)"/></div> isMobile<div><input type="text" id="mobile" οnblur="isMobile(this.value)"/></div> isEmail<div><input type="text" id="email" οnblur="isEmail(this.value)"/></div> isUri<div><input type="text" id="uri" οnblur="isUri(this.value)"/></div> <div><input type="button" value="Validata" οnclick="return validata();" /></div> </form> </body> </html> 4. 用JS jquery取float型小數點后兩位 1. 最笨的辦法 function get() { var s = 22.127456 + “”; var str = s.substring(0,s.indexOf(“.”) + 3); alert(str); } 2. 正則表達式效果不錯 <scrīpt type=”text/javascrīpt”> onload = function(){ var a = “23.456322″; var aNew; var re = /([0-9]+\.[0-9]{2})[0-9]*/; aNew = a.replace(re,”$1″); alert(aNew); } </scrīpt> 3. 他就比較聰明了….. <scrīpt> var num=22.127456; alert( Math.round(num*100)/100); </scrīpt> 4.會用新鮮東西的朋友……. 但是需要 IE5.5+才支持。 <scrīpt> var num=22.127456; alert( num.toFixed(2)); </scrīpt> 參考鏈接: http://www.cnblogs.com/freexiaoyu/archive/2008/12/17/1356690.html http://www.cnblogs.com/qyz123/archive/2007/05/12/743537.html http://www.cnblogs.com/luluping/archive/2008/05/04/1181434.html 關鍵字:js驗證表單大全,用JS控制表單提交 ,javascript提交表單: 目錄: 1:js 字符串長度限制、判斷字符長度 、js限制輸入、限制不能輸入、textarea 長度限制 2.:js判斷漢字、判斷是否漢字 、只能輸入漢字 3:js判斷是否輸入英文、只能輸入英文 4:js只能輸入數字,判斷數字、驗證數字、檢測數字、判斷是否為數字、只能輸入數字 5:只能輸入英文字符和數字 6: js email驗證 、js 判斷email 、信箱/郵箱格式驗證 7:js字符過濾,屏蔽關鍵字 8:js密碼驗證、判斷密碼 2.1: js 不為空、為空或不是對象 、判斷為空 、判斷不為空 2.2:比較兩個表單項的值是否相同 2.3:表單只能為數字和"_", 2.4:表單項輸入數值/長度限定 2.5:中文/英文/數字/郵件地址合法性判斷 2.6:限定表單項不能輸入的字符 2.7表單的自符控制 2.8:form文本域的通用校驗函數 1. 長度限制 <script> function test() { if(document.a.b.value.length>50) { alert("不能超過50個字符!"); document.a.b.focus(); return false; } } </script> <form name=a οnsubmit="return test()"> <textarea name="b" cols="40" wrap="VIRTUAL" rows="6"></textarea> <input type="submit" name="Submit" value="check"> </form> 2. 只能是漢字 <input οnkeyup="value="/oblog/value.replace(/[^\u4E00-\u9FA5]/g,'')"> 3." 只能是英文 <script language=javascript> function onlyEng() { if(!(event.keyCode>=65&&event.keyCode<=90)) event.returnvalue=false; } </script> <input οnkeydοwn="onlyEng();"> 4. 只能是數字 <script language=javascript> function onlyNum() { if(!((event.keyCode>=48&&event.keyCode<=57)||(event.keyCode>=96&&event.keyCode<=105))) //考慮小鍵盤上的數字鍵 event.returnvalue=false; } </script> <input οnkeydοwn="onlyNum();"> 5. 只能是英文字符和數字 <input οnkeyup="value="/oblog/value.replace(/[\W]/g,"'') "onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\d]/g,''))"> 6. 驗證油箱格式 <SCRIPT LANGUAGE=javascript RUNAT=Server> function isEmail(strEmail) { if (strEmail.search(/^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/) != -1) return true; else alert("oh"); } </SCRIPT> <input type=text οnblur=isEmail(this.value)> 7. 屏蔽關鍵字(這里屏蔽***和****) <script language="javascript1.2"> function test() { if((a.b.value.indexOf ("***") == 0)||(a.b.value.indexOf ("****") == 0)){ alert(":)"); a.b.focus(); return false;} } </script> <form name=a οnsubmit="return test()"> <input type=text name=b> <input type="submit" name="Submit" value="check"> </form> 8. 兩次輸入密碼是否相同 <FORM METHOD=POST ACTION=""> <input type="password" id="input1"> <input type="password" id="input2"> <input type="button" value="test" οnclick="check()"> </FORM> <script> function check() { with(document.all){ if(input1.value!=input2.value) { alert("false") input1.value = ""; input2.value = ""; } else document.forms[0].submit(); } } </script> 夠了吧 :) 屏蔽右鍵 很酷 οncοntextmenu="return false" οndragstart="return false" onselectstart="return false" 加在body中 二 2.1 表單項不能為空 <script language="javascript"> <!-- function CheckForm() { if (document.form.name.value.length == 0) { alert("請輸入您姓名!"); document.form.name.focus(); return false; } return true; } --> </script> 2.2 比較兩個表單項的值是否相同 <script language="javascript"> <!-- function CheckForm() if (document.form.PWD.value != document.form.PWD_Again.value) { alert("您兩次輸入的密碼不一樣!請重新輸入."); document.ADDUser.PWD.focus(); return false; } return true; } --> </script> 2.3 表單項只能為數字和"_",用于電話/銀行帳號驗證上,可擴展到域名注冊等 <script language="javascript"> <!-- function isNumber(String) { var Letters = "1234567890-"; //可以自己增加可輸入值 var i; var c; if(String.charAt( 0 )=='-') return false; if( String.charAt( String.length - 1 ) == '-' ) return false; for( i = 0; i < String.length; i ++ ) { c = String.charAt( i ); if (Letters.indexOf( c ) < 0) return false; } return true; } function CheckForm() { if(! isNumber(document.form.TEL.value)) { alert("您的電話號碼不合法!"); document.form.TEL.focus(); return false; } return true; } --> </script> 2.4 表單項輸入數值/長度限定 <script language="javascript"> <!-- function CheckForm() { if (document.form.count.value > 100 || document.form.count.value < 1) { alert("輸入數值不能小于零大于100!"); document.form.count.focus(); return false; } if (document.form.MESSAGE.value.length<10) { alert("輸入文字小于10!"); document.form.MESSAGE.focus(); return false; } return true; } //--> </script> 2.5 中文/英文/數字/郵件地址合法性判斷 <SCRIPT LANGUAGE="javascript"> <!-- function isEnglish(name) //英文值檢測 { if(name.length == 0) return false; for(i = 0; i < name.length; i++) { if(name.charCodeAt(i) > 128) return false; } return true; } function isChinese(name) //中文值檢測 { if(name.length == 0) return false; for(i = 0; i < name.length; i++) { if(name.charCodeAt(i) > 128) return true; } return false; } function isMail(name) // E-mail值檢測 { if(! isEnglish(name)) return false; i = name.indexOf(" at "); j = name dot lastIndexOf(" at "); if(i == -1) return false; if(i != j) return false; if(i == name dot length) return false; return true; } function isNumber(name) //數值檢測 { if(name.length == 0) return false; for(i = 0; i < name.length; i++) { if(name.charAt(i) < "0" || name.charAt(i) > "9") return false; } return true; } function CheckForm() { if(! isMail(form.Email.value)) { alert("您的電子郵件不合法!"