regex101 1-9關 通關筆記


task 1 : word boundaries(單詞邊界)

image
要求匹配 word 這個獨個的單詞。 /\bword\b/i

知識點

  • 忽略大小寫 /i (insensitive)
  • 單詞邊界 \b 為邊界 , \B 不為邊界
    \B 在不消耗\w的情況下匹配\w
    image
    \b 在不消耗任何字符的情況下,立即被\w匹配的字符和不被\w匹配的字符匹配(按任何順序)。它不能用來區分非詞和詞。
    image

task 2 : capitalizing i (大寫字母i)

image
要求把 所有 的 單個的 i 變成 大寫 I /\bi\b/I/g

知識點

  • 全部匹配而不是 只匹配一次 /g

task 3 : uppercase consonants (大寫的輔音)

image
要求匹配大寫的輔音字母
我的解法:/[B-DF-HJ-NP-TV-Z]/g 別人的解法:/[^AEIOUa-z_\W\d]/g

知識點

  • 字符分類
    image

task 4 : retrieve numbers (檢索數據)

image
要求匹配 int 型 數字
我的第一次解法 /\D?\d+\D?/g 第二次 /\d+/g
知識點
貪婪與非貪婪,匹配個數
a? 零個或一個a
a* 零個或多個a
a+ 一個或以上a
a{3} 3個a
a{3,} 3個a以上
a{3,6} 3到6個a
a* 貪婪模式
a*? 懶惰模式
a*+ 侵占模式

task 5 : whitespace (空格)

image
配置4個以上的空格
我的第一次結果/[[:space:]]{4,}/g 我的第二次結果/\s{4,}/g

知識點

空白字符 \s[[:space:]]
匹配個數 a{4,} 4或更多個a

task 6 : broken keyboard (擊毀鍵盤)

image
這關是說他按下一個鍵,有時候會被重復兩次,但有時候不會,你需要把重復的那兩次去掉。
我的答案 s/(.)\1\1/$1/g

知識點

\1 匹配時引用第一組
$1 替換時引用第一組

task 7 : validate an ip

image
大佬的答案 (?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])(?:\.(?!$)|$)){4}解釋一下:匹配組重復4次:0-255的數字 + (.和不是結尾)|(結尾) 77分

我不會,百度一點后自己的解決方案 /^(?:(?:25[0-5]|2[0-4]\d|[0-1]?\d{1,2})\.){3}(?:25[0-5]|2[0-4]\d|[0-1]?\d{1,2})$/g 82分
然后按照大佬的規則稍微改進一下:/^(?:(?:25[0-5]|2[0-4]\d|[0-1]?\d{1,2})(?:\.(?!$)|$)){4}$/g 59分
最低的是 39分

知識點

| 0-199 | 200-255
121.005.154.138 是不是正規ip
image
(?:xxxx) 不要分配 gorup 號

Task 8: HTML Tags (optional) (HTML標簽 任選)

image
從字符串中去掉所有HTML標記。有些可能會換行且不完整 例如 body>xxxx</body
<.*> 太貪婪了,匹配到<div>foo</div>
我的答案是s/<[^<>]*>|[^<]*>|<[^<]*/g
我好菜 啊。

Task 9: Match an E-Mail (Simplified) (optional) (匹配郵件 簡化 可選)

image
我的解法:

/^([A-Za-z0-9!#$%&'*+\-\/=?^_`{|}~]+|[A-Za-z0-9!#$%&'*+\-\/=?^_`{|}~]+\.[A-Za-z0-9!#$%&'*+\-\/=?^_`{|}~]+)@(([A-Za-z0-9]+|[A-Za-z0-9]+-+[A-Za-z0-9]+)\.)+([a-z]){2,6}$/gi


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM