顯示具有 JavaScript 標籤的文章。 顯示所有文章
顯示具有 JavaScript 標籤的文章。 顯示所有文章

JS備忘 - 常用正規表達式

【常用正規表達式】

[\u4E00-\u9FA5]+ 漢字
\u3040-\u30FF 假名
 \u3040-\u309F 平假名
 \u30A0-\u30FF 片假名
\u3100-\u312F 注音符號
\u1100-\u11FF 諺文
[A-Za-z]+ 英文詞

JS備忘 - 字串方法

  • charAt()
  • 傳回索引值位置的字元
    var str="abcde";
    var a=str.charAt(3);//結果:a="d"
    var str="甲乙丙丁戊";
    var a=str.charAt(3);//結果:a="丁"
    
  • charCodeAt()
  • 傳回索引值位置的萬國碼(unicode)
    var str="abcde";
    var a=str.charCodeAt(3);//結果:a=100(相當於16進位64)
    var str="甲乙丙丁戊";
    var a=str.charCodeAt(3);//結果:a=19969(相當於16進位4E01)
    
  • concat()
  • 合併多個字串並傳回新的合併後字串
    var str1="abc";
    var str2="甲乙丙";
    var a=str1.concat(str2);//結果:a="abc甲乙丙"
    
  • fromCharCode()
  • 把多個unicode轉成字串
    var a=String.fromCharCode(100,19969);//結果:a="d丁"
    
  • indexOf()
  • 搜索並傳回指定子字串在字串中第一次出現的位置
    var str="abcdde";
    var a=str.indexOf("d");//結果:a=3(若搜尋不到,則回傳-1)
    var str="甲乙丙丁丁戊";
    var a=str.indexOf("丁");//結果:a=3
    
  • lastIndexOf()
  • 由後往前搜索並傳回指定子字串在字串中第一次出現的位置
    var str="abcdde";
    var a=str.lastIndexOf("d");//結果:a=4(若搜尋不到,則回傳-1)
    var str="甲乙丙丁丁戊";
    var a=str.lastIndexOf("丁");//結果:a=4
    
  • match()
  • 使用正規表達式來搜尋字串,傳回匹配功的字串陣列
    var str="abcde";
    var a=str.match("d");//結果:a=d(若搜尋不到,則回傳null)
    
  • replace(/原字串/, 取代後字串)
  • 比對並替換字串,可以使用正規表達示
    //僅取代一次
    var str="abcdabcd";
    var a=str.replace(/c/,"丙");//結果:a=ab丙dabcd
    //全數取代
    var str="abcdabcd";
    var a=str.replace(/c/g,"丙");//結果:a=ab丙dab丙d
    
  • search(欲搜尋字串)
  • 使用正規表達式來搜尋字串,傳回字串所在位置的索引值
    var str="this is John";
    var a=str.search("John");//結果:a=8(若搜尋不到,則回傳-1)
    
  • slice(開始索引值, 結束索引值)
  • 依起始索引與結束索引取得字串中的子字串
    var str="this is John";
    var a=str.slice(8,10);//結果:a=Jo
    
  • split(分割符字串)
  • 分割字串並傳回字串陣列
    var str="this is John";
    var a=str.split(" ");//以空格分割,a=this,is,John(陣列)
    
  • substr(開始索引值,長度)
  • 依起始索引與長度取得字串中的子字串
    var str="abcdefg";
    var a=str.substr(2,3);//結果:a=cde
    
  • substring(開始索引值, 結束索引值)
  • 取得字串中的子字串
    (注:substring() 不接受負數,此點與 slice() 不同。)
    var str="this is John";
    var a=str.substring(8,10);//結果:a=Jo
    
  • toLowerCase()
  • 把字串變成小寫
    var str="ABCDE";
    var a=str.toLowerCase();//結果:a=abcde
    
  • toUpperCase()
  • 把字串變成大寫
    var str="abcde";
    var a=str.toUpperCase();//結果:a=ABCDE
    
  • valueOf()
  • 傳回布林物件原始值

JS備忘 - 正規表達式

  • ^ 匹配字串的開頭
  • $ 匹配字串的結尾
  • ^rabbit:以 rabbit 開頭的字串。
    cute rabbit$:以 cute rabbit 結尾的字串。
    ^rabbit$:以 rabbit 開頭、以 rabbit 結尾的字串,即 rabbit。
    rabbit:包含 rabbit 的字串。

  • * 零個以上(相當於{0,}
  • + 一個以上(相當於{1,}
  • ? 零個或一個(相當於{0,1}
  • 注:其效用只限於符號前的那個字。
    ab*:以 a 開頭,後面為零個以上的 b 所組成的字串(即 a、ab、abb、abbb...)。
    ab+:以 a 開頭,後面為一個以上的 b 所組成的字串(即 ab、abb、abbb...)。
    ab?:以 a 開頭,後面為零個或一個 b 所組成的字串(即 a 或 ab)。
    a?b+$:以「零個或一個a,再加上一個以上的 b」結尾的字串。

  • { } 指定字符的數量
  • ab{2}:a 後面二個 b(即 abb )。
    ab{2,}:a 後面二個以上的 b(如:abb、abbbb)。
    ab{3,5}:a 後面三至五個 b(即 abbb、abbbb、abbbbb)。

  • ( ) 多個字符組成的字符組
  • a(bc)*:a 後面零個或一個 bc(即 a 或 abc)。
    a(bc){1,5}:a 後面一至五個 bc(即 abc、abcbc……abcbcbcbcbc)。

  • | 指「或」
  • rabbit | bunny:含有 rabbit 或 bunny 的字串。
    (a | bc)de:含有 ade 或 bcde 的字串。
    (a | b)*c:含有零個以上的 a 或 b,再加一個 c 的字串。

  • . 代表所有單一字符
  • a.[0-9]:a 後加一個字符,再加一個0到9的數字。
    ^.{3}$:以三個任意字符組成的字串。

  • [ ] 只從方括號內選取一個單一字符
  • [ab]:一個 a 或一個 b(等同於 a|b)。
    [a-d]:一個 a 至 d 的字符(等同於 a|b|c|d[abcd])。
    [a-zA-Z]:任一個大寫或小寫的英文字母。
    ^[a-zA-Z]:以任一英文字母開頭的字串。
    [0-9]%:含有「x%」的字串。
    ,[a-zA-Z0-9]$:以「逗號,再加一個數字或字母」結尾的字串。

  • [^ ] 方括號內,前面加上 ^ 表示排除括號內字符
  • %[^a-zA-Z]%:含有「二個百分號中間有一個非字母」的字串。

    注:方括號內所有特殊字符,都不再具有原本的功能性,視為一般字符。
    [*\+?{}.]:含有括號內字符的字串。

    注:若清單含有「]」,最好置於第一位(排除時,則置於 ^ 後)。
    若含有「-」,最好置於最前或最後,或一個範圍的第二個結束點。

    [a-d-0-9] 字母與數字間的「-」也算在選取範圍內。

  • \b 字詞邊界(即一個字的開頭或結尾)。
  • \B 非字詞邊界(即一個字的中間)。
  • tion\b 能匹配「diction」,不能匹配「dictionary」。
    tion\B 能匹配「dictionary」,不能匹配「diction」。

  • \d 單個數字。等同於 [0-9]
  • \D 排除單個數字。等同於 [^0-9]

  • \r 取自 Return。源自於打字機上頭的滑動輥筒架(捲紙用,邊打會邊往左移)往右歸復,稱為 Carriage Return,相當把游標移到最左邊。
  • \n 取自 New line,即換行。打字機要換行時,分為兩個動作,一個是將輥筒架往右歸位,另一個是輥筒架會把紙往上捲動一些。因此 windows 中的完整換行相當於 \r\n。

  • \w 包括字母、數字、底線。等同於 [A-Za-z0-9_]
  • \W 排除字母、數字、底線。等同於 [^A-Za-z0-9_]

  • \u萬國碼 萬國碼(unicode)為四個十六進位的字。
  • \u00A9 指版權符號 ©。

JS備忘 - 陣列

【陣列宣告】
var names=["一","二","三"];
var names=new Array("一","二","三");(較不好的寫法)
var names=new Array(10);(先指定陣列項目數量)

【陣列方法】
.valueOf() 將陣列各項加上逗號,化為一個字串。
.toString() 效果同上。
names.valueOf();//結果:一,二,三

.join(字串) 同樣將陣列化為一字串,但可自定分隔符號。
names.join("@");//結果:一@二@三

.pop() 移除最末一項。
.shift() 移除第一項,後續各項索引值往前挪。
.push(字串) 在陣列後面加入一項。
.unshift(字串) 在陣列開頭加入一項,各項索引值往後挪。

.length 指定陣列長度。
names.length=5;//結果:names=["一","二","三",,]
names.length=2;//結果:names=["一","二"]

.splice(索引值,數量,新項目1,新項目2,...) 從索引值起算,移除指定的「數量」項目,並在同一處插入新的項目值。
names.splice=(1,1,"壹","貳");//結果:names=["一","壹","貳","三"]
說明:索引值1內容原為"二",由此起算移除1項,故"二"被移除。再於同一個位置插入新項目"壹"、"貳"。
若不輸入新項目值,也可做為移除指定項目用:
names.splice=(1,1);//結果:names=["一","三"]

delete 陣列[索引值] 移除指定的索引值項目內容,變為 undefined(未定義),陣列長度不變。
delete names[2];//結果:陣列內容仍為3項,分別為 "一"、"二"、undefined。

JS備忘 - 瀏覽器與 HTML 元素事件

瀏覽器事件(須小寫)說明
onload
onfocus
onblur
onscroll
onresize
HTML元素事件說明
onclick點擊時
ondbclick雙擊時
onMouseDown按下滑鼠鍵時
onMouseUp放開滑鼠鍵時
onMouseOut游標離開範圍時
onMouseOver游標進入範圍時
onKeyDown按下鍵盤鍵時
onKeyUp放開鍵盤鍵時
onKeyPress按下鍵盤鍵後放開時
onError讀取出錯時
onBlur失焦時
onFocus聚焦時
onLoad讀取後
onUnload
onResize
onReset
onSubmit
onChange內容改變且失去焦點時
onSelect圈選文字時