regex101 1-9关 通关笔记
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
淦
本文来自博客园,作者:Nestar,转载请注明原文链接:https://www.cnblogs.com/Nestar/p/15194797.html

浙公网安备 33010602011771号