0%

JavaScript Chap.5 : 淺談RegExp

JavaScript Chap.5 : 淺談RegExp

在這篇文章會學到

  • RegExp 是什麼
  • 怎麼撰寫 RegExp
  • 怎麼使用 RegExp

近期在使用Codewars刷題練習時,時常發現自己寫了許多判別,有人卻使用一行code就解決了,經過研究後發現,是使用RegExp方法,這就使我想了解並寫成文章。

RegExp 是什麼

RegExp (Regular Expression) 中文為正規表達式,是用來描述輸入字串是否有符合規則模型(pattern),也可以自訂規則,來判定輸入字串資料是否符合需求使用。

怎麼撰寫 RegExp

有兩種方法可以使用 分別為:

1
2
3
4
5
// 1. 使用 // 前後包裝,這種效能較佳
const regex = /some rule/

// 2. 使用 new RegExp() 建立物件
const regex = new RegExp('some rule')

再搭配使用 RegExp 物件中 的 testexec就可以進行驗證

1
2
3
4
5
6
7
8
9
10
11
const regex = /Hello World/
// 使用test 驗證
regex.test('Hello World !!') // true
regex.test('hello world !!') // false

// 在//後加上i:不區分大小寫

const regex = /Hello World/i
regex.test('hello world !!') // true


若要針對不特定大小寫或是字母、數字等需求,
RegExp也提供相對應的中介字元(Metacharacters)和特別序列(Special Sequences):

中介字元(Metacharacters)-

特別序列(Special Sequences):

怎麼使用 RegExp

因此我們可以搭配上述表格進行題目練習:

練習一:

信用卡號碼需求為 16碼數字 (xxxx-xxxx-xxxx-xxxx),請問要怎麼表示?

1
2
3
4
// 數字0-9對應為 \d  ;需求數量可用 {} 或 * 來表示
const regex = /\d{4}-\d{4}-\d{4}-\d{4}/;
regex.test('1111-2222-3333-4444'); // true
regex.test('1-2-3-4-5-6-7-8'); // false

練習二:
設定密碼時需求為至少有一個大寫英文字母及一個數字搭配,請問要怎麼表示?

1
2
3
4
5
6
7
8
9
// + 代表最少要使用一次; *則代表最少為0 , 兩者搭配
const regex = /\w*[A-Z]+\w*\d+\w*/
regex.test('Abc123'); // true
regex.test('123Abc'); // false

// 再加上 or 的條件
const regex = /(\w*[A-Z]+\w*\d+\w*)||(\w*\d+\w*\[A-Z]+\w*)/
regex.test('Abc123'); // true
regex.test('123Abc'); // true

此外也可以連上 regexone 網站,提供更多RegExp的練習。

以上就是本篇想說的,謝謝大家收看。

參考資料: