第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
的 match
、replace
、search
和 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="郵政編碼格式不正確!";
}