task 1 : word boundaries(單詞邊界)

要求匹配 word 這個獨個的單詞。 /\bword\b/i
知識點
- 忽略大小寫
/i(insensitive) - 單詞邊界
\b為邊界 ,\B不為邊界
\B在不消耗\w的情況下匹配\w

\b在不消耗任何字符的情況下,立即被\w匹配的字符和不被\w匹配的字符匹配(按任何順序)。它不能用來區分非詞和詞。

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

要求把 所有 的 單個的 i 變成 大寫 I /\bi\b/I/g
知識點
- 全部匹配而不是 只匹配一次
/g
task 3 : uppercase consonants (大寫的輔音)

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

task 4 : retrieve numbers (檢索數據)

要求匹配 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 (空格)

配置4個以上的空格
我的第一次結果/[[:space:]]{4,}/g 我的第二次結果/\s{4,}/g
知識點
空白字符 \s 和 [[:space:]]
匹配個數 a{4,} 4或更多個a
task 6 : broken keyboard (擊毀鍵盤)

這關是說他按下一個鍵,有時候會被重復兩次,但有時候不會,你需要把重復的那兩次去掉。
我的答案 s/(.)\1\1/$1/g
知識點
\1 匹配時引用第一組
$1 替換時引用第一組
task 7 : validate an ip

大佬的答案 (?:(?: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

(?:xxxx) 不要分配 gorup 號
Task 8: HTML Tags (optional) (HTML標簽 任選)

從字符串中去掉所有HTML標記。有些可能會換行且不完整 例如 body>xxxx</body
<.*> 太貪婪了,匹配到<div>foo</div>了
我的答案是s/<[^<>]*>|[^<]*>|<[^<]*/g
我好菜 啊。
Task 9: Match an E-Mail (Simplified) (optional) (匹配郵件 簡化 可選)

我的解法:
/^([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
淦
