2022年4月25日 星期一

在正則表達式過濾特定結尾的寫法

在正則表達式過濾特定結尾的寫法 

前言

  在 [ developer.mozilla.org ] 正規表達式 裡發現有個寫法我從來沒用過,在此把學習的過程做個紀錄。


內容

  在 [ developer.mozilla.org ] 正規表達式 裡發現有個寫法是過濾特定結尾的寫法,語法是"x(?=y)"與"x(?!y)","x" 的部分是要取得的開頭,"y"的部分則為結尾,"?="表示符合的結尾是結果,"?!"代表的是不符合的結尾是結果,聽起來有點難懂,可以利用 [ coding.tools ] 正則表達式在線測試工具 來實驗,實驗結果如下

使用"?="的寫法


使用"?!"的寫法

在使用"?="的寫法可以看到"That"並不會被當結果,只有"This"被當成結果,且結果只有"Th"的部分,並不包含"is",所以這個語法可以把它解釋成過濾特定結尾,"?!"的寫法其實就是相反的邏輯,不符合的結尾都是結果,所以只有"That"是結果,這兩個語法可以搭配"|"來過濾不同的結尾。

  這個寫法是專門針對結尾有特定規則的應用,目前沒想到哪裡用的到,不過還是學習了。


參考資料

[ developer.mozilla.org ] 正規表達式

[ coding.tools ] 正則表達式在線測試工具

2022年4月18日 星期一

正則表達式的剃除字元的用法

 正則表達式的剃除字元的用法

前言

  最近發現正則表達式有剃除字元的用法,雖然還沒想到在哪可以用到,但還是仔此做個紀錄。


內容

  一般如果要用正則表達式檢查單一數字會使用"\d",有或是"[0-9]",中括弧內可以自由地填入允許的字元,但最近發現有相反的寫法,如果要除了數字以外都允許的話,可以寫作"[^0-9]",又或可以用"\D"來代表,用法看起來相當直覺,所以我做了"[^\D]",這樣的結果其實和"[\d]"是一致的,可以把"^"當作是"反閘"的邏輯來想,這可能不讓人困惑,那如果是"[\d\D]"呢?,這樣會變成任何的字元都符合條件,可以想成中括弧內的字元都是用"或閘"邏輯來連結,還有一件有趣的事是通常"[\D]"可以寫作"[^0-9]",但如果把"[\d\D]"寫成"[\d^0-9]",會發現結果不正確!這是因為"^"要放在開頭才有效果,如果放在非開頭會判為允許"^"字元,這點請注意。


參考資料

[ developer.mozilla.org ] 正規表達式

2022年4月11日 星期一

正規表達式的括弧的另一種用法

 正規表達式的括弧的另一種用法

前言

  在前一篇 關於正規表達式的括弧 裡介紹了括弧的用法,但每個括弧都會被記錄會沒有彈性,有辦法有的括弧要被記錄有的括弧不被紀錄嗎?答案是肯定的,在五把學習的過程駔個紀錄。


內容

  範例如下

const reg = /(?:\d+)_(\d+)/dg;
let s = '123_456,12_34';
for( const match of s.matchAll(reg) ){
  console.log(match.indices );
}
//[[0, 7], [4, 7]]
//[[8, 13], [11, 13]]


只要在括弧的開頭加上"?:",就可以標記不要輸出結果,範例的結果變成兩個,對比上次 關於正規表達式的括弧 的範例就可以發現少了有加註"?:"的結果,這樣就可以製作出有彈性的結果。


參考資料

[ developer.mozilla.org ] 正規表達式


相關文章與資料

關於正規表達式的括弧

2022年4月4日 星期一

關於正規表達式的括弧

 關於正規表達式的括弧

前言

  最近發現正規表達式的括弧有"標記"的作用,在此把學習的過程做個紀錄。


內容

  範例如下

const reg = /(\d+)_(\d+)/dg;
let s = '123_456,12_34';
for( const match of s.matchAll(reg) ){
  console.log(match.indices );
}
//result
//[[0, 7], [0, 3], [4, 7]]
//[[8, 13], [8, 10], [11, 13]]


先看到範例的第一個結果,陣列會先回傳整個符合正規表達式的結果,接著結果陣列還會有兩個結果,這兩個結果會對應到正規表達式裡的兩個括弧,它代表著括弧的開頭和結束指標,利用這個括弧的特性就可以取得"123"與"456"的位址,如果將原本的正規表達式的括弧移除,一樣可以做到整個結果的比對,但無法取得"123"與"456"的位址,括弧就像"標記"一樣,可以取得要比對的內容裡的特定字串的位址,搭配 JavaScript 2022 在正規表達式的新標準 的用法可以不只比對結果還可快速找到結果的特定字串。


參考資料

[ developer.mozilla.org ] 正規表達式


相關文章與資料

JavaScript 2022 在正規表達式的新標準