常用正则表达式

来源:互联网 发布:php post 实现 get 编辑:程序博客网 时间:2024/05/19 16:22

1. 匹配数字(包括+-,正数,负数,小数及小数点等)

(+?(\d+|\.\d+|\d+\.\d+)) | (-?(\d+|\d+\.\d+))

 /^(?:\+|-)?(?:\d+\.)?\d+$/ 

2. 精确匹配超连接
<a(?=\s)[^>]*(?<=\s)href\s*=\s*[\"']?([^\"'\s]+)[\"']?[^>]*>([\s\S]+?)</a>


经验:
1. 正则表达式中不能匹配,最简单的可用排除型字符组表示,但它只能表示”某个字符不能出现”,如果要表示“某个字符串不能出现”, 一般都要用到否定环视(左边有什么或右边有什么,左边不能有什么或右边不能有什么,通常那些字符自身是不能被匹配的)

2. 断言包括单词边界,行起始/结束位置,环视(断言算是一种结构,它不真正匹配文本,而只负责左/右侧的文本是否符合要求),javascript不支持逆序环视

3. 小括号()和中括号[]都可以用作分支结构,但中括号只能匹配单个字符如[0-3],[abc],而小括号可以表示多个了符(aa|bb|cc)

4. 量词后用?表示忽略优先量词(非贪婪模式)。贪婪与非贪婪模式影响的是被量词修饰的子表达式的匹配行为,贪婪模式在整个表达式匹配成功的前提下,尽可能多的匹配,而非贪婪模式在整个表达式匹配成功的前提下,尽可能少的匹配

5. 正则表达式包括提取和验证,验证时,一般要求开头和结尾都满足要求,我们常用的^和$,是不能匹配换行符\n和多行模式的,使用\A和\z会更加准确。由于验证操作一般都会有明确的验证规则,将这些验证规则叠加即可,而提取操作不一定会给出关于要提取文本的严格描述,所以一般处理是先找到最明显的特征,再慢慢完善