正则表达式学习笔记与经验总结

前端之家收集整理的这篇文章主要介绍了正则表达式学习笔记与经验总结前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

以前总是习惯把笔记都写在笔记本上,blog便一直荒废着。现在趁着暑假有几天清闲日子,还是把笔记本上的东西都搬到博客里来吧。顺便温故而知新下——正则表达式。


先来个复杂的:比如如下邮箱,字母开头,可以含数字,字母,点,加减号,以及下划线。

\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)* 


要看懂上面的正则表达式,先学习如下四条规则:


1。^、$为定位符,分别表示开始和结束。如^abc <=> 以abc开头;abc$ <=> 以abc结尾;


2。* : 0个或多个。如 ab* <=> ab{0,}

+: 1个或多个。如 ab+ <=> ab{1,}。注意这里只针对单个b,表示b有一个或多个,如果涵括ab,则需要叫一个括号,即(ab)+。

? : 0个或1个。 如 ab? <=> ab{0,1}

| :或者。如( a | b)* <=> a{0,} 或者 b{0,}

. : 单字符通配符。不包括\n

{} : 表示个数或范围。

[] : 只匹配一个单个字符。如[a-zA-Z]表示单个字母


3。重要的特殊元字符,需要记忆,值得记忆。

\d : 0-9的单个数字。11位电话号码就表示为 \d{11}。

\S : 与\s相反。

\s: 表示单个空格符,含tab键和换行符。

\w : 表示字母、数字或下划线的单个字符。

\W: 与\w相反。

\b : 匹配一个边界。如"love" 将匹配成功正则表达式"ve\b"。


4。用\转义来表示特殊字符。如\uxxxx表示Unicode编码字符。\*表示*号等。

否定符的使用[^],当^进入了[]中时,将失去定位符的含义,和[]组合形成否定符。如[^0-4]表示不包含0,1,2,3,4。



接下来,我们再来看看开头贴出来的那个邮箱地址匹配,看看是不是很简单。

\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)* 
分析:
\w+:一个或多个字母、数字或下划线。[-+.]\w+:以-、+、.为首,接着含一个或多个字母、数字或下划线。*:零个或多个。
@:邮箱必备字符。\w+([-.]\w+)*:同上分析。\.:表示单个.字符。
 
 

是不是觉得很简单,没错,正则表达式看起来复杂,实则不难。提供个正则表达式的测试网址:http://tool.chinaz.com/regex/。大家练练手。

最后,贴一些常用的正则表达式匹配。

汉字:^[\u4e00-\u9fa5]{0,}$
中国邮政编码:[1-9]\d{5}(?!\d)    (中国邮政编码为6位数字)
IP地址:\d+\.\d+\.\d+\.\d+    (提取IP地址时有用)
空白行的正则表达式:\n\s*\r    (可以用来删除空白行)
HTML标记的正则表达式:<(\S*?)[^>]*>.*?</\1>|<.*? />
。。。。。详见http://www.cr173.com/html/19109_all.html



猜你在找的正则表达式相关文章