不得不知的正则( 一 )
前言
对一个程序员来说,正则是不得不理解的东西,日常开发中,用处很多;作为一个前台开发人员,也是常常用到。可以匹配出你自己想要的字段,文件,反正就是很爽。与其四处百度,不如自己掌握;
平常自己练习正则的时候,可以找个在线正则进行练习,就比较方便;
随意推荐一个 在线正则工具
这里主要总结少量正则的实例用法。
少量基本常识
- 1、特殊字符
特殊字符,需要用反斜杠 \ 进行转译
[ ] \ ^ $ . | ? * + ( )注意: 字符集中只有4个 字符 (字符集后面会说),也就是只有这4个需要转译;
] \ ^ -“]”代表字符集定义的结束;
“\”代表转义;
“^”代表取反;
“-”代表范围定义
- 2、js正则引擎工作机制—正则向导
即惰性,猴急的;
regex|regex not (这里 | 符合是或者者的意思)
匹配 “regex not”
返回 regex
- 3、字符集
正则表达式引擎仅仅匹配多个字符中的一个
<<q[^u]>>:匹配一个q,后面跟着一个不是u的字符
比方匹配 “hellow quite qi”
返回qi,而不是q,或者者qu;
- 4、使用?*或者+ 进行重复
?:告诉引擎匹配前导字符0次或者一次。
+:告诉引擎匹配前导字符1次或者屡次 {1,}
*:告诉引擎匹配前导字符0次或者屡次 {0,}
“+”是贪婪的
“?*”的重复也是贪婪的
举个例子
'This is a <EM>first</EM> test'.match(/<.+>/)返回'<EM>first</EM>’,而不是<EM>,
. 理论上匹配任何字符
由于贪婪的意思就是尽可能多的返回的意思,所以第一个”>”也是.的范围,直到匹配到最后一个“>”。
处理办法一:
“+”的惰性代替贪婪性
“+”后面紧跟一个问号“?”,问号的意思就是0次或者者1次
'This is a <EM>first</EM> test'.match(/<.+?>/)就返回的<EM>
'This is a <EM>first</EM> test'.match(/<.+?>/g)就返回的<EM>和</EM>,g的意思就是全局的意思,加个m就是匹配多行的意思,加个i就是不区分大小写;
就这样用,意思是全局匹配,不区分大小写
'This is a <EM>first</Em> test'.match(/<.+?>/ig)最后返回<EM>,和</Em>;
处理办法二:
'This is a <EM>first</EM> test'.match(/<[^>]+>/)^ 是非的意思
[^>] 不是>的一个字符
解释是,匹配一个< 及不是>的所有字符1到屡次(最好屡次,贪婪),再加一个>,
更好,由于,使用取反字符集则不需要进行回溯。
- 5、位置锚定
^ 匹配一行字符串第一个字符前的位置
$ 匹配字符串中最后一个字符的后面的位置
(?<!a)b 匹配一个b前面,没有a的b,向后查看
q(?!u) 匹配一个q,后面没有u的q,向前查看
q(?=?) 匹配一个q,后面等于?
这里的前后很好了解
比方 ‘hello quite qq’, 字符串,从左到右是匹配的顺序,比方匹配到p的时候,要看后面有没有u,那么对引擎来说,就是向前查看,
判断q前面有没有u的话,引擎就要回溯上个匹配字符,所以就是向后的看了,
注意:js目前不支持向前查看,有些浏览器有,兼容不好,慎用。
- 6、多行匹配
‘first line\n\r first line’.match(/line$/mg)
返回[“line”, “line”]
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » 不得不知的正则( 一 )