• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            C++ Programmer's Cookbook

            {C++ 基礎} {C++ 高級} {C#界面,C++核心算法} {設計模式} {C#基礎}

            正則表達式

            正則表達式,相關鏈接
            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 微軟的正則表達式教程(二):正則表達式語法和優先權順序

            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 經典正則表達式

            正則表達式,正規表達式,正則表達式匹配,正則表達式語法,模式匹配,正規表達式匹配 javascript正則表達式 ASP正則表達式 ASP.NET正則表達式 C#正則表達式 JSP正則表達式 PHP正則表達式 VB.NET正則表達式 VBSCript正則表達式編程 delphi正則表達式 jscript

             

            正則表達式 regular expression
            正則表達式 RegExp
            模式 pattern
            匹配 Match
            .NET命名空間: System.Text.RegularExpression

             

            補充:
            ^\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

             

            利用正則表達式去除字串中重復的字符的算法程序:

            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.確認有效電子郵件格式
            下面的代碼示例使用靜態 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.清理輸入字符串
            下面的代碼示例使用靜態 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>...) 組捕獲的子字符串。

            有幾種靜態函數使您可以在使用正則表達式操作時無需創建顯式正則表達式對象,而 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}");
            }
            --------------------------------------------------------
            /*------------------------
            功能:替換任何空白字符
            -------------------------*/
            function TrimString (strVal)
            {
            strTmp = strVal + "";
            if (strTmp.length == 0)
            return (strTmp);
            reVal = /^\s*/;
            strTmp = strTmp.replace (reVal, '');
            reVal = /\s*$/;
            return (strTmp.replace (reVal, ''));
            }

            /*------------------------
            功能:檢測是否是有效數字
            -------------------------*/
            function Check_Num( num )
            {
            num = ( TrimString( num ) );
            if (num.length == 0)
            return (false);
            return ( Number( num ) );
            }

            /*------------------------
            功能:檢測是否是有效日期
            -------------------------*/
            function Check_Date (strDate)
            {
            strDate = (TrimString (strDate));
            if (strDate.length == 0)
            return (false);
            reVal = /^([1-2]\d{3})[\/|\-](0?[1-9]|10|11|12)[\/|\-]([1-2]?[0-9]|0[1-9]|30|31)$/;
            return (reVal.test (strDate));
            }

            /*------------------------
            功能:檢測是否是有效Email
            -------------------------*/
            function Check_Email (strEmail)
            {
            strEmail = (TrimString (strEmail));
            if (strEmail.length == 0)
            return (false);

            reVal = /^[\-!#\$%&'\*\+\\\.\/0-9=\?A-Z\^_`a-z{|}~]+@[\-!#\$%&'\*\+\\\.\/0-9=\?A-Z\^_`a-z{|}~]+(\.[\-!#\$%&'\*\+\\\.\/0-9=\?A-Z\^_`a-z{|}~]+)+$/;
            return (reVal.test (strEmail));
            }

            /*------------------------
            功能:檢測是否是有效時間
            -------------------------*/
            function Check_Time (strTime)
            {
            strTime = (TrimString (strTime));
            if (strTime.length == 0)
            return (false);

            reVal = /^(([0-9]|[01][0-9]|2[0-3])(:([0-9]|[0-5][0-9])){0,2}|(0?[0-9]|1[0-1])(:([0-9]|[0-5][0-9])){0,2}\s?[aApP][mM])?$/;
            return (reVal.test (strTime));
            }

            /*------------------------
            功能:檢測是否是有效日期特定格式
            -------------------------*/
            function Check_Date_1 (strDate)
            {
            strDate = (TrimString (strDate));
            if (strDate.length == 0)
            return (false);
            reVal = /^([1-2]\d{3})[\/](0?[1-9]|10|11|12)[\/]([1-2]?[0-9]|0[1-9]|30|31)$/;
            return (reVal.test (strDate));
            }

            /*------------------------
            功能:檢測是否是有效日期特定格式
            -------------------------*/
            function Check_Date_2 (strDate)
            {
            strDate = (TrimString (strDate));
            if (strDate.length == 0)
            return (false);
            reVal = /^([1-2]\d{3})[\-](0[1-9]|10|11|12)[\-]([1-2][0-9]|0[1-9]|30|31)$/;
            return (reVal.test (strDate));
            }

            /*--------------------------------------
            功能:換行定行
            ---------------------------------------*/
            function enter( form, temp )
            {
            if ( window.event.keyCode == 13 )
            {
            eval( form + temp + ".focus()" );
            eval( form + temp + ".select()" );
            }
            else
            return (false);
            }

            /*--------------------------------------
            功能:檢查字符串長度
            ---------------------------------------*/
            function ByteString (strVal)
            {
            nLen = 0;

            for (i = 0; i < strVal.length; i ++)
            {
            if (strVal.charCodeAt (i) > 255)
            nLen += 2;
            else
            nLen ++;
            };
            return (nLen);
            }

            /*--------------------------------------
            功能:按要求截取字符串長度
            ---------------------------------------*/
            function SubString(strVal,nStrLen)
            {
            nLen = 0;
            nTemp = 0;
            for (i = 0; i < strVal.length; i ++)
            {
            if (strVal.charCodeAt (i) > 255)
            nLen += 2;
            else
            nLen ++;
            if(nLen <= nStrLen)
            nTemp = i;
            else
            break;
            };
            return(strVal.substr(0,nTemp+1));
            }

            /*------------------------
            功能:檢測密碼,密碼只能由英文字母、數字、減號、下劃線、$、#、*、(和)構成,且首位必須是英文字母
            -------------------------*/
            function Check_Pass( strPass )
            {
            strPass = ( TrimString( strPass ) );
            if (strPass.length == 0)
            return (false);
            reVal = /^[a-zA-Z]{1}[a-zA-Z0-9-_$#*()]{0,29}$/;
            return ( reVal.test (strPass) );
            }

            這是所有的,不過是PHP的,你自己轉換一下吧~~
            --------------------------------------
            一、驗證類
            1、數字驗證內
            1.1 整數
            1.2 大于0的整數 (用于傳來的ID的驗證)
            1.3 負整數的驗證
            1.4 整數不能大于iMax
            1.5 整數不能小于iMin
            2、時間類
            2.1 短時間,形如 (13:04:06)
            2.2 短日期,形如 (2003-12-05)
            2.3 長時間,形如 (2003-12-05 13:04:06)
            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 判斷字符由字母和數字,下劃線,點號組成.且開頭的只能是下劃線和字母
            4.4 字符串替換函數.Replace();
            5、瀏覽器類
            5.1 判斷瀏覽器的類型
            5.2 判斷ie的版本
            5.3 判斷客戶端的分辨率

            6、結合類
            6.1 email的判斷。
            6.2 手機號碼的驗證
            6.3 身份證的驗證


            二、功能類

            1、時間與相關控件類
            1.1 日歷
            1.2 時間控件
            1.3 萬年歷
            1.4 顯示動態顯示時鐘效果(文本,如OA中時間)
            1.5 顯示動態顯示時鐘效果 (圖像,像手表)
            2、表單類
            2.1 自動生成表單
            2.2 動態添加,修改,刪除下拉框中的元素
            2.3 可以輸入內容的下拉框
            2.4 多行文本框中只能輸入iMax文字。如果多輸入了,自動減少到iMax個文字(多用于短信發送)

            3、打印類
            3.1 打印控件
            4、事件類
            4.1 屏蔽右鍵
            4.2 屏蔽所有功能鍵
            4.3 --> 和<-- F5 F11,F9,F1
            4.4 屏蔽組合鍵ctrl+N
            5、網頁設計類
            5.1 連續滾動的文字,圖片(注意是連續的,兩段文字和圖片中沒有空白出現)
            5.2 html編輯控件類
            5.3 顏色選取框控件
            5.4 下拉菜單
            5.5 兩層或多層次的下拉菜單
            5.6 仿IE菜單的按鈕。(效果如rongshuxa.com的導航欄目)
            5.7 狀態欄,title欄的動態效果(例子很多,可以研究一下)
            5.8 雙擊后,網頁自動滾屏
            6、樹型結構。
            6.1 asp+SQL版
            6.2 asp+xml+sql版
            6.3 java+sql或者java+sql+xml
            7、無邊框效果的制作
            8、連動下拉框技術
            9、文本排序


            一、驗證類
            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 所有的表單的值都不能為空
            <input onblur="if(this.value.replace(/^\s+|\s+$/g,'')=='')alert('不能為空!')">
            3.2 多行文本框的值不能為空。
            3.3 多行文本框的值不能超過sMaxStrleng
            3.4 多行文本框的值不能少于sMixStrleng
            3.5 判斷單選框是否選擇。
            3.6 判斷復選框是否選擇.
            3.7 復選框的全選,多選,全不選,反選
            3.8 文件上傳過程中判斷文件類型
            4、字符類
            4.1 判斷字符全部由a-Z或者是A-Z的字字母組成
            <input onblur="if(/[^a-zA-Z]/g.test(this.value))alert('有錯')">
            4.2 判斷字符由字母和數字組成。
            <input onblur="if(/[^0-9a-zA-Z]/g.test(this.value))alert('有錯')">
            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 復選框的全選,多選,全不選,反選
            <form name=hrong>
            <input type=checkbox name=All onclick="checkAll('mm')">全選<br/>
            <input type=checkbox name=mm onclick="checkItem('All')"><br/>
            <input type=checkbox name=mm onclick="checkItem('All')"><br/>
            <input type=checkbox name=mm onclick="checkItem('All')"><br/>
            <input type=checkbox name=mm onclick="checkItem('All')"><br/>
            <input type=checkbox name=mm onclick="checkItem('All')"><br/><br/>


            <input type=checkbox name=All2 onclick="checkAll('mm2')">全選<br/>
            <input type=checkbox name=mm2 onclick="checkItem('All2')"><br/>
            <input type=checkbox name=mm2 onclick="checkItem('All2')"><br/>
            <input type=checkbox name=mm2 onclick="checkItem('All2')"><br/>
            <input type=checkbox name=mm2 onclick="checkItem('All2')"><br/>
            <input type=checkbox name=mm2 onclick="checkItem('All2')"><br/>

            </form>

            <SCRIPT LANGUAGE="JavaScript">
            function checkAll(str)
            {
            var a = document.getElementsByName(str);
            var n = a.length;
            for (var i=0; i<n; i++)
            a[i].checked = window.event.srcElement.checked;
            }
            function checkItem(str)
            {
            var e = window.event.srcElement;
            var all = eval("document.hrong."+ str);
            if (e.checked)
            {
            var a = document.getElementsByName(e.name);
            all.checked = true;
            for (var i=0; i<a.length; i++)
            {
            if (!a[i].checked){ all.checked = false; break;}
            }
            }
            else all.checked = false;
            }
            </SCRIPT>

            3.8 文件上傳過程中判斷文件類型
            <input type=file onchange="alert(this.value.match(/^(.*)(\.)(.{1,8})$/)[3])">

            畫圖:
            <OBJECT
            id=S
            style="LEFT: 0px; WIDTH: 392px; TOP: 0px; HEIGHT: 240px"
            height=240
            width=392
            classid="clsid:369303C2-D7AC-11D0-89D5-00A0C90833E6">
            </OBJECT>
            <SCRIPT>
            S.DrawingSurface.ArcDegrees(0,0,0,30,50,60);
            S.DrawingSurface.ArcRadians(30,0,0,30,50,60);
            S.DrawingSurface.Line(10,10,100,100);
            </SCRIPT>

            寫注冊表:
            <SCRIPT>
            var WshShell = WScript.CreateObject("WScript.Shell");
            WshShell.RegWrite ("HKCU\\Software\\ACME\\FortuneTeller\\", 1, "REG_BINARY");
            WshShell.RegWrite ("HKCU\\Software\\ACME\\FortuneTeller\\MindReader", "Goocher!", "REG_SZ");
            var bKey = WshShell.RegRead ("HKCU\\Software\\ACME\\FortuneTeller\\");
            WScript.Echo (WshShell.RegRead ("HKCU\\Software\\ACME\\FortuneTeller\\MindReader"));
            WshShell.RegDelete ("HKCU\\Software\\ACME\\FortuneTeller\\MindReader");
            WshShell.RegDelete ("HKCU\\Software\\ACME\\FortuneTeller\\");
            WshShell.RegDelete ("HKCU\\Software\\ACME\\");
            </SCRIPT>

            TABLAE相關(客戶端動態增加行列)
            <HTML>
            <SCRIPT LANGUAGE="JScript">
            function numberCells() {
            var count=0;
            for (i=0; i < document.all.mytable.rows.length; i++) {
            for (j=0; j < document.all.mytable.rows(i).cells.length; j++) {
            document.all.mytable.rows(i).cells(j).innerText = count;
            count++;
            }
            }
            }
            </SCRIPT>
            <BODY onload="numberCells()">
            <TABLE id=mytable border=1>
            <TR><TH>&nbsp;</TH><TH>&nbsp;</TH><TH>&nbsp;</TH><TH>&nbsp;</TH></TR>
            <TR><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD></TR>
            <TR><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD></TR>
            </TABLE>
            </BODY>
            </HTML>

            1.身份證嚴格驗證:

            <script>
            var aCity={11:"北京",12:"天津",13:"河北",14:"山西",15:"內蒙古",21:"遼寧",22:"吉林",23:"黑龍江",31:"上海",32:"江蘇",33:"浙江",34:"安徽",35:"福建",36:"江西",37:"山東",41:"河南",42:"湖北",43:"湖南",44:"廣東",45:"廣西",46:"海南",50:"重慶",51:"四川",52:"貴州",53:"云南",54:"西藏",61:"陜西",62:"甘肅",63:"青海",64:"寧夏",65:"新疆",71:"臺灣",81:"香港",82:"澳門",91:"國外"}

            function cidInfo(sId){
            var iSum=0
            var info=""
            if(!/^\d{17}(\d|x)$/i.test(sId))return false;
            sId=sId.replace(/x$/i,"a");
            if(aCity[parseInt(sId.substr(0,2))]==null)return "Error:非法地區";
            sBirthday=sId.substr(6,4)+"-"+Number(sId.substr(10,2))+"-"+Number(sId.substr(12,2));
            var d=new Date(sBirthday.replace(/-/g,"/"))
            if(sBirthday!=(d.getFullYear()+"-"+ (d.getMonth()+1) + "-" + d.getDate()))return "Error:非法生日";
            for(var i = 17;i>=0;i --) iSum += (Math.pow(2,i) % 11) * parseInt(sId.charAt(17 - i),11)
            if(iSum%11!=1)return "Error:非法證號";
            return aCity[parseInt(sId.substr(0,2))]+","+sBirthday+","+(sId.substr(16,1)%2?"男":"女")
            }

            document.write(cidInfo("380524198002300016"),"<br/>");
            document.write(cidInfo("340524198002300019"),"<br/>")
            document.write(cidInfo("340524197711111111"),"<br/>")
            document.write(cidInfo("34052419800101001x"),"<br/>");
            </script>

            2.驗證IP地址
            <SCRIPT LANGUAGE="JavaScript">
            function isip(s){
            var check=function(v){try{return (v<=255 && v>=0)}catch(x){return false}};
            var re=s.split(".")
            return (re.length==4)?(check(re[0]) && check(re[1]) && check(re[2]) && check(re[3])):false
            }

            var s="202.197.78.129";
            alert(isip(s))
            </SCRIPT>



            3.加sp1后還能用的無邊框窗口!!
            <HTML XMLNS:IE>
            <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
            <IE:Download ID="include" STYLE="behavior:url(#default#download)" />
            <title>Chromeless Window</title>

            <SCRIPT LANGUAGE="JScript">
            /*--- Special Thanks For andot ---*/

            /*
            This following code are designed and writen by Windy_sk <seasonx@163.net>
            You can use it freely, but u must held all the copyright items!
            */

            /*--- Thanks For andot Again ---*/

            var CW_width = 400;
            var CW_height = 300;
            var CW_top = 100;
            var CW_left = 100;
            var CW_url = "/";
            var New_CW = window.createPopup();
            var CW_Body = New_CW.document.body;
            var content = "";
            var CSStext = "margin:1px;color:black; border:2px outset;border-style:expression(onmouseout=onmouseup=function(){this.style.borderStyle='outset'}, onmousedown=function(){if(event.button!=2)this.style.borderStyle='inset'});background-color:buttonface;width:16px;height:14px;font-size:12px;line-height:11px;cursor:Default;";

            //Build Window
            include.startDownload(CW_url, function(source){content=source});

            function insert_content(){
            var temp = "";
            CW_Body.style.overflow = "hidden";
            CW_Body.style.backgroundColor = "white";
            CW_Body.style.border = "solid black 1px";
            content = content.replace(/<a ([^>]*)>/g,"<a onclick='parent.open(this.href);return false' $1>");
            temp += "<table width=100% height=100% cellpadding=0 cellspacing=0 border=0>";
            temp += "<tr style=';font-size:12px;background:#0099CC;height:20;cursor:default' ondblclick=\"Max.innerText=Max.innerText=='1'?'2':'1';parent.if_max=!parent.if_max;parent.show_CW();\" onmouseup='parent.drag_up(event)' onmousemove='parent.drag_move(event)' onmousedown='parent.drag_down(event)' onselectstart='return false' oncontextmenu='return false'>";
            temp += "<td style='color:#ffffff;padding-left:5px'>Chromeless Window For IE6 SP1</td>";
            temp += "<td style='color:#ffffff;padding-right:5px;' align=right>";
            temp += "<span id=Help onclick=\"alert('Chromeless Window For IE6 SP1 - Ver 1.0\\n\\nCode By Windy_sk\\n\\nSpecial Thanks For andot')\" style=\""+CSStext+"font-family:System;padding-right:2px;\">?</span>";
            temp += "<span id=Min onclick='parent.New_CW.hide();parent.blur()' style=\""+CSStext+"font-family:Webdings;\" title='Minimum'>0</span>";
            temp += "<span id=Max onclick=\"this.innerText=this.innerText=='1'?'2':'1';parent.if_max=!parent.if_max;parent.show_CW();\" style=\""+CSStext+"font-family:Webdings;\" title='Maximum'>1</span>";
            temp += "<span id=Close onclick='parent.opener=null;parent.close()' style=\""+CSStext+"font-family:System;padding-right:2px;\" title='Close'>x</span>";
            temp += "</td></tr><tr><td colspan=2>";
            temp += "<div id=include style='overflow:scroll;overflow-x:hidden;overflow-y:auto; HEIGHT: 100%; width:"+CW_width+"'>";
            temp += content;
            temp += "</div>";
            temp += "</td></tr></table>";
            CW_Body.innerHTML = temp;
            }

            setTimeout("insert_content()",1000);

            var if_max = true;
            function show_CW(){
            window.moveTo(10000, 10000);
            if(if_max){
            New_CW.show(CW_top, CW_left, CW_width, CW_height);
            if(typeof(New_CW.document.all.include)!="undefined"){
            New_CW.document.all.include.style.width = CW_width;
            New_CW.document.all.Max.innerText = "1";
            }

            }else{
            New_CW.show(0, 0, screen.width, screen.height);
            New_CW.document.all.include.style.width = screen.width;
            }
            }

            window.onfocus = show_CW;
            window.onresize = show_CW;

            // Move Window
            var drag_x,drag_y,draging=false

            function drag_move(e){
            if (draging){
            New_CW.show(e.screenX-drag_x, e.screenY-drag_y, CW_width, CW_height);
            return false;
            }
            }

            function drag_down(e){
            if(e.button==2)return;
            if(New_CW.document.body.offsetWidth==screen.width && New_CW.document.body.offsetHeight==screen.height)return;
            drag_x=e.clientX;
            drag_y=e.clientY;
            draging=true;
            e.srcElement.setCapture();
            }

            function drag_up(e){
            draging=false;
            e.srcElement.releaseCapture();
            if(New_CW.document.body.offsetWidth==screen.width && New_CW.document.body.offsetHeight==screen.height) return;
            CW_top = e.screenX-drag_x;
            CW_left = e.screenY-drag_y;
            }

            </SCRIPT>
            </HTML>

            電話號碼的驗證

            要求:
              (1)電話號碼由數字、"("、")"和"-"構成
              (2)電話號碼為3到8位
              (3)如果電話號碼中包含有區號,那么區號為三位或四位
              (4)區號用"("、")"或"-"和其他部分隔開
              (5)移動電話號碼為11或12位,如果為12位,那么第一位為0
              (6)11位移動電話號碼的第一位和第二位為"13"
              (7)12位移動電話號碼的第二位和第三位為"13"
              根據這幾條規則,可以與出以下正則表達式:
              (^[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}$)


            <script language="javascript">
            function PhoneCheck(s) {
            var str=s;
            var reg=/(^[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}$)/
            alert(reg.test(str));
            }
            </script>
            <input type=text name="iphone">
            <input type=button onclick="PhoneCheck(document.all.iphone.value)" value="Check">

            具有在輸入非數字字符不回顯的效果,即對非數字字符的輸入不作反應。
            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;
            }
            }

            驗證ip

            str=document.RegExpDemo.txtIP.value;
            if(/^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/.test(str)==false)
            {
            window.alert('錯誤的IP地址格式');
            document.RegExpDemo.txtIP.select();
            document.RegExpDemo.txtIP.focus();
            return;
            }
            if(RegExp.$1<1 || RegExp.$1>254||RegExp.$2<0||RegExp.$2>254||RegExp.$3<0||RegExp.$3>254||RegExp.$4<1||RegExp.$4>254)
            {
            window.alert('錯誤的IP地址');
            document.RegExpDemo.txtIP.select();
            document.RegExpDemo.txtIP.focus();
            return;
            }
            //剔除 如 010.020.020.03 前面 的0
            var str=str.replace(/0(\d)/g,"$1");
            str=str.replace(/0(\d)/g,"$1");
            window.alert(str);


            //一下是取數據的類
            //Obj參數指定數據的來源(限定Table),默認第一行為字段名稱行
            //GetTableData類提供MoveNext方法,參數是表的行向上或向下移動的位數,正數向下移動,負數向上.
            //GetFieldData方法獲得指定的列名的數據
            //Sort_desc方法對指定的列按降序排列
            //Sort_asc方法對指定的列按升序排列
            //GetData方法返回字段值為特定值的數據數組,提供數據,可以在外部進行其他處理
            //Delete方法刪除當前記錄,數組減少一行
            //初始化,Obj:table的名字,Leftlen:左面多余數據長度,Rightlen:右面多余數據長度,
            function GetTableData(Obj,LeftLen,RightLen){
            var MyObj=document.all(Obj);
            var iRow=MyObj.rows.length;
            var iLen=MyObj.rows[0].cells.length;
            var i,j;

            TableData=new Array();
            for (i=0;i< iRow;i++){
            TableData[i]=new Array();
            for (j=0;j<iLen;j++){
            TableStr=MyObj.rows(i).cells(j).innerText;
            TableStr=TableStr.substring(LeftLen, TableStr.length-RightLen).Trim();
            TableStr=TableStr.replace(/ /gi,"").replace(/\r\n/ig,"");
            TableData[i][j]=TableStr;
            }
            }

            this.TableData=TableData;
            this.cols=this.TableData[0].length;
            this.rows=this.TableData.length;
            this.rowindex=0;
            }


            function movenext(Step){
            if (this.rowindex>=this.rows){
            return
            }

            if (Step=="" || typeof(Step)=="undefined") {
            if (this.rowindex<this.rows-1)
            this.rowindex++;
            return;

            }
            else{
            if (this.rowindex + Step<=this.rows-1 && this.rowindex + Step>=0 ){
            this.rowindex=this.rowindex + Step;
            }
            else
            {
            if (this.rowindex + Step<0){
            this.rowindex= 0;
            return;
            }
            if (this.rowindex + Step>this.rows-1){
            this.rowindex= this.rows-1;
            return;
            }
            }
            }
            }


            function getfielddata(Field){
            var colindex=-1;
            var i=0;
            if (typeof(Field) == "number"){
            colindex=Field;
            }
            else
            {
            for (i=0;i<this.cols && this.rowindex<this.rows ;i++){
            if (this.TableData[0][i]==Field){
            colindex=i;
            break;
            }
            }
            }
            if (colindex!=-1) {
            return this.TableData[this.rowindex][colindex];
            }

            }



            function sort_desc(){//降序
            var colindex=-1;
            var highindex=-1;
            desc_array=new Array();
            var i,j;
            for (n=0; n<arguments.length; n++){
            Field=arguments[arguments.length-1-n];
            for (i=0;i<this.cols;i++){
            if (this.TableData[0][i]==Field){
            colindex=i;
            break;
            }
            }
            if ( colindex==-1 )
            return;
            else
            {
            desc_array[0]=this.TableData[0];
            for(i=1;i<this.rows;i++){
            desc_array[i]=this.TableData[1];
            highindex=1;
            for(j=1;j<this.TableData.length;j++){
            if (desc_array[i][colindex]<this.TableData[j][colindex]){
            desc_array[i]=this.TableData[j];
            highindex=j;
            }

            }
            if (highindex!=-1)
            this.TableData=this.TableData.slice(0,highindex).concat(this.TableData.slice(highindex+1,this.TableData.length));
            }
            }


            this.TableData=desc_array;
            }
            return;
            }



            function sort_asc(){//升序
            var colindex=-1;
            var highindex=-1;
            var i,j;
            for (n=0; n<arguments.length; n++){
            asc_array=new Array();
            Field=arguments[arguments.length-1-n];
            for (i=0;i<this.cols;i++){
            if (this.TableData[0][i]==Field){
            colindex=i;
            break;
            }
            }
            if ( colindex==-1 )
            return;
            else
            {
            asc_array[0]=this.TableData[0];
            for(i=1;i<this.rows;i++){
            asc_array[i]=this.TableData[1];
            highindex=1;
            for(j=1;j<this.TableData.length;j++){//找出最小的列值
            if (asc_array[i][colindex]>this.TableData[j][colindex]){
            asc_array[i]=this.TableData[j];
            highindex=j;

            }

            }
            if (highindex!=-1)
            this.TableData=this.TableData.slice(0,highindex).concat(this.TableData.slice(highindex+1,this.TableData.length));

            }
            }


            this.TableData=asc_array;
            }
            return;
            }



            function getData(Field,FieldValue){
            var colindex=-1;
            var i,j;

            GetData=new Array();
            if (typeof(Field)=="undefined" || typeof(FieldValue)=="undefined" ){
            return this.TableData;
            }

            for(j=0;j<this.cols;j++){
            if (this.TableData[0][j]==Field){
            colindex=j;
            }
            }
            if (colindex!=-1){

            for(i=1;i<this.rows;i++){
            if (this.TableData[i][colindex]==FieldValue){
            GetData[i]=new Array();
            GetData[i]=this.TableData[i];
            }
            }
            }
            return GetData;
            }
            function DeletE(){
            this.TableData=this.TableData.slice(0,this.rowindex).concat(this.TableData.slice(this.rowindex+1,this.TableData.length));
            this.rows=this.TableData.length;
            return;
            }
            function updateField(Field,FieldValue){
            var colindex=-1;
            var i=0;
            if (typeof(Field) == "number"){
            colindex=Field;
            }
            else
            {
            for (i=0;i<this.cols && this.rowindex<this.rows ;i++){
            if (this.TableData[0][i]==Field){
            colindex=i;
            break;
            }
            }
            }
            if (colindex!=-1) {
            this.TableData[this.rowindex][colindex]=FieldValue;
            }


            }
            function movefirst(){
            this.rowindex=0;
            }
            function movelast(){
            this.rowindex=this.rows-1;
            }
            function String.prototype.Trim() {return this.replace(/(^\s*)|(\s*$)/g,"");}
            GetTableData.prototype.MoveNext = movenext;
            GetTableData.prototype.GetFieldData = getfielddata;
            GetTableData.prototype.Sort_asc = sort_asc;
            GetTableData.prototype.Sort_desc = sort_desc;
            GetTableData.prototype.GetData = getData;
            GetTableData.prototype.Delete = DeletE;
            GetTableData.prototype.UpdateField = updateField;
            GetTableData.prototype.MoveFirst = movefirst;

            具體的例子:http://202.119.73.208/NetEAn/com/test/jsprint.htm

            在每個文本框的onblur事件中調用校驗代碼,并且每個文本框中onKeyDown事件中寫一個enter轉tab函數

            //回車鍵換為tab
            function enterToTab()
            {
            if(event.srcElement.type != 'button' && event.srcElement.type != 'textarea'
            && event.keyCode == 13)
            {
            event.keyCode = 9;
            }
            }
            -------------------------------------------

            正則表達式用于字符串處理,表單驗證等場合,實用高效,但用到時總是不太把握,以致往往要上網查一番。我將一些常用的表達式收藏在這里,作備忘之用。本貼隨時會更新。

            匹配中文字符的正則表達式: [\u4e00-\u9fa5]

            匹配雙字節字符(包括漢字在內):[^\x00-\xff]

            應用:計算字符串的長度(一個雙字節字符長度計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上發貼尋求一個表達式來實現去除重復字符的方法,最終沒有找到,這是我能想到的最簡單的實現方法。思路是使用后向引用取出包括重復的字符,再以重復的字符建立第二個表達式,取到不重復的字符,兩者串連。這個方法對于字符順序有要求的字符串可能不適用。

            得用正則表達式從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,''))"

            posted on 2005-12-22 12:46 夢在天涯 閱讀(3751) 評論(0)  編輯 收藏 引用 所屬分類: C#/.NET

            公告

            EMail:itech001#126.com

            導航

            統計

            • 隨筆 - 461
            • 文章 - 4
            • 評論 - 746
            • 引用 - 0

            常用鏈接

            隨筆分類

            隨筆檔案

            收藏夾

            Blogs

            c#(csharp)

            C++(cpp)

            Enlish

            Forums(bbs)

            My self

            Often go

            Useful Webs

            Xml/Uml/html

            搜索

            •  

            積分與排名

            • 積分 - 1804303
            • 排名 - 5

            最新評論

            閱讀排行榜

            一本色道久久99一综合| 久久这里有精品视频| 亚洲AV无码久久| 精品久久久久久无码专区不卡| 精品国产一区二区三区久久| 久久国产精品一区| 亚洲成色WWW久久网站| 国产精久久一区二区三区| 日日狠狠久久偷偷色综合0| 精品久久久久久久无码| 无码精品久久一区二区三区| 久久91精品久久91综合| 亚洲国产天堂久久久久久| 国产精品久久一区二区三区| 欧美黑人激情性久久| 久久91这里精品国产2020| 欧美午夜精品久久久久免费视 | 日本福利片国产午夜久久| 思思久久好好热精品国产| 热re99久久精品国产99热| 久久超碰97人人做人人爱| 99久久国产亚洲综合精品| 久久精品免费网站网| 激情伊人五月天久久综合| 伊人久久大香线蕉成人| 久久人人爽人人精品视频| 日韩一区二区久久久久久| 99久久精品国内| 777米奇久久最新地址| 久久久久99精品成人片直播| 国内精品伊人久久久久777| 亚洲精品国产综合久久一线| 欧美大战日韩91综合一区婷婷久久青草| 人人狠狠综合久久亚洲婷婷| 欧美一区二区精品久久| 91久久香蕉国产熟女线看| 久久综合丝袜日本网| 国产—久久香蕉国产线看观看| 精品久久久久一区二区三区| yy6080久久| 国产色综合久久无码有码|