代码改变世界

正则表达式学习笔记

2015-05-14 22:39  windant  阅读(806)  评论(0编辑  收藏  举报

每次写代码用到正则表达式的时候发现自己把正则表达式的规则忘光了,因此,为了方便自己回忆和查询现在把正则表达式的常用规则写下来,虽然网上关于正则表达式的内容已经很多,但是自己总结出来的东西自己理解起来更容易一些,所以这个时间还是有必要花的。

站长之家正则表达式测试工具 

W3school的参考文档

1, 正则表达式的基本规则

元字符

\d 数字通配符

\D 非数字通配符

\w 英文字母+数字通配符(注意:非英文字母不匹配,如é)

\W 非(英文字母+数字)通配符 ,如:!@#$%{}|\[空格]

\s 空格通配符

\S 非空格通配符

\b 单词首字母通配符  如:/bh 匹配 hello 里面的h 但是不匹配 phone 里面的h

其它还有很多的就不列了,用到的时候再查

表达式

[abc] 匹配abc三个字符中的任意一个

[^abc] 匹配任何不在方括号之间的字符

[0-9] 匹配0到9的任何数字

[a-z] 匹配a-z之间的任何字母

[A-Z] 匹配A-Z之间的任何字母

[A-z] 匹配大写A到小写z之间的任何字母

red|green|blue 匹配单词red或者green或者blue

...

量词

n+ 匹配任何包含至少一个 n 的字符串

n* 匹配任何包含零个或多个 n 的字符串

n{x} 匹配包含 X 个 n 的序列的字符串

^n 匹配任何开头为 n 的字符串。

n$ 匹配任何结尾为 n 的字符串

 ...

2, 正则表达式使用中注意事项

在JavaScript中应用正则表达式注意反斜杠需要转义

例如: \d 应该写成 \\d

<script>

var rexp = new RegExp("^(\\d{15}|\\d{17}[\\dx])$");

rexp.test("[15位或者18位身份证号]");

</script>

 

贪婪模式 和 非贪婪模式

举例1:表达式 "<td>(.*)</td>" 与字符串 "<td><p>aa</p></td> <td><p>bb</p></td>" 匹配时,匹配的结果是:成功;匹配到的内容是 "<td><p>aa</p></td> <td><p>bb</p></td>" 整个字符串, 表达式中的 "</td>" 将与字符串中最后一个 "</td>" 匹配。 


    举例2:相比之下,表达式 "<td>(.*?)</td>" 匹配举例1中同样的字符串时,将只得到 "<td><p>aa</p></td>", 再次匹配下一个时,可以得到第二个 "<td><p>bb</p></td>"。

 

来自 http://blog.csdn.net/ethanq/article/details/6869055