🙂
JavaScript - 程式設計
  • JavaScript - 程式設計
  • 1. 簡介
    • 1.1 講者簡介
    • 1.2 課程簡介
    • 1.3 開發工具簡介
    • 1.4 第一個 JavaScript
  • 2. 網站技術簡介
    • 2.1 網站前端技術
    • 2.2 網站後端技術
    • 2.3 JavaScript 簡介
  • 3. JavaScript程式語言
    • 3.1 套用 JavaScript
    • 3.2 註解(Comment)
    • 3.3 變數(Variable)
    • 3.4 資料型態(Data Types)
    • 3.5 Strict 模式
    • 3.6 運算子(Operator)
    • 3.7 字串(String)
    • 3.8 數值(Number)
    • 3.9 陣列(Array)
    • 3.10 物件(Object)
    • 3.11 條件式(Conditional)
    • 3.12 迴圈(Loop)
    • 3.13 函式(Function)
    • 3.14 類別(Class)
    • 3.15 傳值呼叫、傳址呼叫
    • 3.16 變數可視範圍(scope)
    • 3.17 錯誤補捉(Errors)
    • 3.18 資料格式
  • 4. JavaScript常用函式及主題
    • 4.1 JSON
    • 4.2 時間間隔執行
    • 4.3 數學(Math)
    • 4.4 日期時間(Date)
    • 4.5 陣列迭代(Iteration)
    • 4.6 陣列排序(Sort)
    • 4.7 正規表達式(Regular Expression)
    • 4.8 效能測試
    • 4.9 this 關鍵字
  • 5. 參考資料
Powered by GitBook
On this page
  • 使用方式
  • 驗證
  • 取代
  • 特殊字元列表
  • 練習
  1. 4. JavaScript常用函式及主題

4.7 正規表達式(Regular Expression)

在 javascript/practice 資料夾下,建立 regular_expression.html 檔案,以便練習。

使用方式

驗證

  • 定義一個字串的規則格式:寫法為 /正規表示式/。

  • 再使用 .test() 方法,來驗證給定的字串是否符合規則,是的話回傳 true,反之回傳 false。

例:

// 定義一個比對的規則,以下的 \s{1} 表示僅能有1個空格。
var pattern = /the\s{1}book/;
// 或以下這個寫法:
//var pattern = new RegExp(/the\s{1}book/);


// 以下是想要比對的字串
var str = "the book";
//var str = "The book";

alert(pattern.test(str));

延續上例,若希望不區分大小寫,就將:

var pattern = /the\s{1}book/;

改成:

var pattern = /the\s{1}book/i; // i 是 ignore(忽略) 的意思。
// 或
// var pattern = new RegExp(/the\s{1}book/, "i");

取代

有分大小寫:

var str = "visit abc and def and abc";
var new_str = str.replace(/ABC/, "101"); // 找不到

console.log(new_str); // visit abc and def and abc

希望不分大小寫(但只會取代找到的第一個):

var str = "visit abc and def and abc";
var new_str = str.replace(/ABC/i, "101");

console.log(new_str); // visit 101 and def and abc

全部搜尋取代,且不分大小寫:

var str = "visit abc and def and abc";
var new_str = str.replace(/ABC/ig, "101");

console.log(new_str); // visit 101 and def and 101

特殊字元列表

字元

比對規則

範例

^

字串起始

/^This/ 與 "This is" 比對結果:true。

$

字串結尾

/end$/ 與 "the end" 比對結果:true。

*

出現零次或多次

/se*/ 與 "seeee"、"se" 比對結果:true。

?

出現零次或 1 次

/ap?/ 與 "apple"、"and" 比對結果:true。

+

出現 1 次以上

/ap+/ 與 "apple" 比對結果:true。與 "and" 比對結果:false。

{n}

剛好出現 n 次

/ap{2}/ 與 "apple" 比對結果:true。與 "and" 比對結果:false。

{n,}

至少出現 n 次

/ap{2,}/ 與 "apple"、"appple" 比對結果:true。與 "aple" 比對結果:false。

{n,m}

最少出現 n 次,最多出現 m 次

/ap{2,4}/ 與 "apple" 比對結果:true。與 "aple" 比對結果:false。

.

任意字元(換行字元除外:\r(enter)、\n(換行)、\r\n(換行))。\t 為 tab

/a.e/ 與 "ape"、"axe"、"a\te" 比對結果:true。與 "a\ne" 比對結果:false。

[...]

中括號裡的任意字元

/a[px]e/ 與 "ape"、"axe" 比對結果為 true。與 "apxe" 比對結果:false。

[^...]

除了中括號裡的任意字元

/a[^px]/ 與 "ale" 比對結果:true。

\d

數字 0 ~ 9

/\d{3}/ 與 "abc 123" 比對結果:true。

\D

任何非數字字元

/\D{2,4}/ 與 "abc 123" 比對結果:true。

\w

字母、數字、底線符號

/\w/ 與 "javascript" 比對結果:true。與 "%" 比對結果:false。

\W

非「字母、數字、底線符號」的其它字元

/\W/ 與 "100%" 比對結果:true。

\n

換行字元

\s

一個空白字元

\S

一個非空白字元

\t

一個 tab 字元

練習

修改以下原始碼,試著比對行動電話號碼:09 開頭,且總共一定要 10 個位數:

var pattern;

var str = "";

console.log(pattern.test(str));

參考作法:

Previous4.6 陣列排序(Sort)Next4.8 效能測試

Last updated 3 years ago