1. 程式人生 > >第8周作業

第8周作業

1.indexOf

用indexof查詢一串字元中某個字元出現的次數:

<!DOCTYPE html>
<html>
 <head>
     <meta charset="utf-8">
        <title>Indexof</title>    
    </head>
    <body>


     <button onclick="myFunction()">點我可檢視這一串"start stop start stop start stop start start start start start stop"字元中"start"字元出現的次數</button>    
        <p id="demo"></p>
        <script type="text/javascript">

         function myFunction(){
             var str = "start stop start stop start stop start start start start start stop";
                var count=0;

                var index=0;
                var key="start";
                while((index = str.indexOf(key,index))!= -1){
                 index += key.length;
                    count = count+1;
                }
                document.getElementById("demo").innerHTML = count;
            }
        </script>    
    </body>
</html>

1. 正則表示式規則(regular expression rules)

正則表示式是用於匹配字串中字元組合的模式。在 JavaScript中,正則表示式也是物件。這些模式被用於 RegExp 的 exec 和 test 方法, 以及 String 的 matchreplacesearch 和 split 方法。本章介紹 JavaScript正則表示式。

正則表示式是形成搜尋模式的字元序列。

在文字中搜索資料時,可以使用此搜尋模式來描述要搜尋的內容。

正則表示式可以是單個字元,也可以是更復雜的模式。

正則表示式可用於執行所有型別的文字搜尋和文字替換操作。

  正則表示式的語義成分包括:

1,轉義字元,如\\反斜槓、\r\n\t\f回車換行等、\0nnn八進位制數、\xff十六進位制數、\uhhhhUnicode字元;

2,字符集,如[abc]、[^abc]非abc、[a-zA-Z0-9]大小寫英文字母及數字、[a-z&&[^g-k]]除g到k之外的小寫字母,\d\s\w數字空白字母,\D\S\W非數字非空白非字母(這裡的反斜槓需要轉義為\\才能編譯),有些POSIX字符集可能有用,\p{ASCII}、\p{Punct}標點、\p{Cntrl}控制符、\p{XDigit}十六進位制字元,特殊集合,[\u4e00-\u9fa5]中文字元、^[1-9]\d{5}$郵政編碼等;

3,邏輯詞及邊界匹配,如XY順序、X|Y或、(X)分組、(?:X)分組但不佔用分組編號、\n之前匹配的分組(如(ab)c+\1表示首尾都是ab,中間全是c的串模式)、$i已匹配的分組對應值(如查詢(ab)(c+)(de)替換為$3$2$1表示前後調換ab和de),^起始(^(ab)以ab開頭的句子)、$結束($(ab)以ab結尾的句子)、\b單詞匹配。

4,貪婪及匹配次數,*0次以上、?0或1次、+1次以上、{n}n次、{n,}n次以上、{n,m}n至m次,?勉強匹配(如abc*?匹配abccd時只得ab),+貪婪匹配(如abc*+匹配abccd則得abcc)。

匹配 name phone email的正則表示式

關於name 

    var str = "my name is pauk";

    var n = str.search(/pauk/i);

關於phone 的驗證(以13開頭18開頭和158,159開頭,共11位)

var re;
var ss=document.getElementById('textbox3').val;
re= /^(13[0-9]{9})| (18[0-9]{9}) |(15[89][0-9]{8})$/

if(re.test(ss))

{
document.getElementById('label3').innerText="";   //給label賦值用innerText
}
else
{
document.getElementById('label3').innerText="請輸入正確的手機號碼!";
document.getElementById('imagebutton1').disabled=tr; //禁用Button用disabled
}

關於Email

郵件地址的驗證(包含@和.)

var re;
var ss=document.getElementById(textboxid).val;
re= /\[email protected]\w*\.\w/
if(re.test(ss))
document.getElementById('label4').innerText="";
else
{
document.getElementById('label4').innerText="請輸入正確的郵件地址!";
document.getElementById('imagebutton1').disabled=tr;
}

關於 郵政編碼的驗證(開頭不能為0,共6位)

var ss=document.getElementById('TextBox4').val;
var re= /^[1-9][0-9]{5}$/
if(re.test(ss))
document.getElementById('label5').innerText="";
else
{

  document.getElementById('label5').innerText="郵政編碼格式不正確!";

}