iT邦幫忙

2022 iThome 鐵人賽

DAY 29
0

學完正則表達式超正的

Regular Expression 在我們寫前端常常會用到:
找資料、驗證資料、等等。
譬如說,我們要用戶輸入的Email,需要包含"@",前面後面也都要有英文符號。
這時候Regular Expression就派上用場啦。

使用常數的const rule = new RegExp('')可以幫我們增加效能。
Regular expression可以搭配String的
match(), matchAll(), replace(), replaceAll(), search(), split()
功能使用,達到驗證、查找、擷取等目的。

不過我們最常用的就是Google然後把搜尋到的答案直接貼上,
今天來徒手來學、複習一下Regular Expression吧!

起手式 & 特殊字符

/把規則包起來/

/g 全部搜尋(global search)


* 這個字母匹配0-多次
+ 匹配1-多次
? 匹配0-1次
^ 以什麼為開始
$ 以什麼為結尾
[^] 排除字符
- 範圍

\跳脫符號
\d 匹配數字
\. 匹配任何字符
[abc] 匹配[]內其中一個字
{3} 匹配次數3次
{3,5} 匹配次數3次到小於5次
\s 匹配空格
() 組合
(cats|dogs) 擇一個

案例組合

//匹配或排除範圍
[0-6] 匹配0-6其中一個數字
[^n-p] 匹配任何一個英文字母,除了n-p

\d\d\d 匹配三位數字
 a{3} 匹配a 1-3次
 [wxy]{5} 匹配5個字母,可以是wxy任一個
 
 ^(file_.+)\.pdf$ 以file_為開頭,後面無限個字幅,以.pdf做結尾

常用正則表達式方法

匹配方法:match & exec

var re = /\w+\s/g;
var str = "fee fi fo fum";
var myArray = str.match(re);

//匹配英文字
const myRe = /d(b+)d/g;
const myArray = myRe.exec("cdbbdbsbz");

//匹配所有,返回Array
const regexp = /t(e)(st(\d?))/g;
const str = 'test1test2';

const array = [...str.matchAll(regexp)];

console.log(array[0]);
// expected output: Array ["test1", "e", "st1", "1"]

測試

返回true or false

const str = 'table football';

const regex = new RegExp('foo*');
const globalRegex = new RegExp('foo*', 'g');

console.log(regex.test(str));
// expected output: true

console.log(globalRegex.lastIndex);
// expected output: 0

搜尋

const paragraph = 'The quick brown fox jumps over the lazy dog. If the dog barked, was it really lazy?';

// any character that is not a word character or whitespace
const regex = /[^\w\s]/g;

console.log(paragraph.search(regex));
// expected output: 43

替代

const p = 'The quick brown fox jumps over the lazy dog. If the dog reacted, was it really lazy?';

console.log(p.replace('dog', 'monkey'));
// expected output: "The quick brown fox jumps over the lazy monkey. If the dog reacted, was it really lazy?"


const regex = /Dog/i;
console.log(p.replace(regex, 'ferret'));
// expected output: "The quick brown fox jumps over the lazy ferret. If the dog reacted, was it really lazy?"

分割

const str = 'The quick brown fox jumps over the lazy dog.';

const words = str.split(' ');
console.log(words[3]);
// expected output: "fox"

const chars = str.split('');
console.log(chars[8]);
// expected output: "k"

const strCopy = str.split();
console.log(strCopy);
// expected output: Array ["The quick brown fox jumps over the lazy dog."]

以上

以上案例都摘自修改自MDN-Regular Expression
正則表達式線上學習資源

回頭再來修改一下。
感恩。

環遊非洲第29天-非洲當代流行音樂

談到非洲流行音樂,你還以為是什麼傳統的部落音樂嗎?
那你可就錯啦,非洲流行音樂超級潮的。
其中最受歡迎,也是國際知名的是西非奈及利亞的Afro Beats,結合
奈及利亞的Yoruba music、jazz、Highlife和funk rhythms的結合,使用打擊樂器和人聲,
近幾年也在歐美大流行,Drake、Beyoncé 也和奈及利亞的音樂人WizKid 等合作,將Afro Beats融入她的專輯和音樂裡。

然後是南非的Amapiano,將house音樂加入 lounge music、爵士形成的一種新風格。
南非街頭隨處都可以聽到Amapiano,路邊的汽車把音響開到最大放的就是Amapiano
喜歡House音樂的人也可以聽聽看。

參考


上一篇
Vue Option 到Composition API 搬家實作-D28
下一篇
測試自己寫,QA不用謝。Vue3 測試入門-D30
系列文
分手前端菜雞之旅@非洲30天30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言