【JavaScript 5—基础知识点】:正则表达式(笔记)
2015-06-08 20:12
841 查看
一、总体概览
1.1,什么是正则
又称正规表示法、常规表示法(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表达式使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。在很多文本编辑器里,正则表达式通常被用来检索、替换那些符合某个模式的文本。简单说来,就是一个描述字符模式的对象。
1.2,正则的作用
正则表达式主要用来验证客户端的输入数据。1.3,正则的好处
客户端验证,可以节约大量的服务器端的系统资源,并且提供更好的用户体验。1.4,相关知识(图示)
说明:正则的表达式,即正则的字符所代表的含义,将在文章最后通过附录的方式给出。从图中可以很明显的看出,正则表达式就是一个对象,有其声明方式,属性和方法等。特别的是,这个对象是一个字符模式。
二、例子说明
2.1,new运算符+test()方法
<span style="font-family:KaiTi_GB2312;font-size:18px;">//使用new运算符的test方法 var pattern = new RegExp("test", "i");//创建正则模式,不区分大小写 var str = "this is a Test";//创建要比对的字符串 alert(pattern.test(str));//结果:true</span>说明:test()方法是测试正则表达式的一个方法,它和exec()方法在整体上都是一样的,只是test()方法返回布尔值,而exec()方法返回匹配到的字符。
2.2,字面量+exec()方法
<span style="font-family:KaiTi_GB2312;font-size:18px;">//使用字面量方式的exec方法 var pattern = /test/i;//创建正则模式,不区分大小写 var str = "this is a Test";//创建要比对的字符串 //alert(pattern.test(str));//结果:true alert(pattern.exec(str));//结果:Test </span>说明:对比使用test()方法和exec()方法返回的不同结果
2.3,match()方法的使用
<span style="font-family:KaiTi_GB2312;font-size:18px;">//使用match方法获取匹配数组 var pattern = /test/ig;//不区分大小写,全局模式 var str = "this is a Test!,that is not a Test"; //alert(str.match(pattern));//匹配到两个,Test,Test alert(str.match(pattern).length);//结果:2</span>
2.4,构造(静态)属性
<span style="font-family:KaiTi_GB2312;font-size:18px;">//使用静态属性 var pattern = /(t)est/;//圆括号分组,lastParen var str = "this is test!"; pattern.test(str);//必须执行一下,静态属性有效 //alert(RegExp.input);//this is test! //alert(RegExp.leftContext);//this is +空格 //alert(RegExp.rightContext);//! //alert(RegExp.lastMatch);//test alert(RegExp.lastParen);//t</span>
说明:直接调用,无须声明,但是使用静态属性会出现一些兼容性的问题,所以需要使用实例属性。
2.5,实例属性
<span style="font-family:KaiTi_GB2312;font-size:18px;">//使用实例属性 var pattern = /test/ig; //alert(pattern.global);//true,是否全局 //alert(pattern.ignoreCase);//true,是否忽略大小写 //alert(pattern.multiline);//false,是否支持换行 alert(pattern.lastIndex);//0,下次的匹配位置 alert(pattern.source);//test,正则表达式的源字符串</span>说明:必须声明正则模式,才可以调用
2.6,贪婪和惰性
<span style="font-family:KaiTi_GB2312;font-size:18px;">//贪婪和惰性 //var pattern = /1(.*)1/;//使用了贪婪 var pattern = /1(.*?)1/g;//使用惰性,必须开启全局,多次匹配 var str = "1test1 1test1 1test1";//匹配到 test1 1test1 1test //document.write(str.replace(pattern, "<strong>$1</strong>"));//结果:<strong>test1 1test1 1test</strong> //alert(pattern.exec(str));//结果:1test1 1test1 1test1,test1 1test1 1test document.write(str.replace(pattern, "<strong>$1</strong>"));//结果:<strong>test test test</strong></span>
三、个人感受
在学习正则表达式的过程中,对于这个正则表达式很有想法的。比如说,在ASP.net里面,有验证控件验证文本输入。而在这里,可以用正则表达式验证文本输入,这两者到底有什么关系,还有就是在具体的实际应用中,需要怎样去灵活的使用呢,这些都需要进一步的去了解。下篇博客再说。附录:正则表达式
符号 | 含义 |
单个字符与数字 | |
. | 匹配任意字符(除换行符之外) |
[^a-z0-9] | 匹配不在方括号中的任意字符 |
[a-z0-9] | 匹配方括号中的任意字符 |
\d | 匹配数字 |
\D | 匹配非数字 |
\W | 匹配非字母 |
\w | 匹配字母 |
空白字符 | |
\0 | 匹配null字符 |
\b | 匹配空格字符 |
\f | 匹配禁止符 |
\n | 匹配换行符 |
\r | 匹配回车符 |
\s | 匹配空白字符、空格、制表符或换行符 |
\S | 匹配非空白字符 |
\t | 匹配制表符 |
定位符 | |
^ | 行首匹配 |
$ | 行尾匹配 |
\A | 只匹配字符的开始处 |
\b | 匹配单词边界,词在[]内无效 |
\B | 匹配非单词边界 |
\G | 匹配当前搜索的开始位置 |
\Z | 匹配字符串结束处 |
\z | 只匹配字符串结束处 |
限定符 | |
X? | 匹配0个或1个x |
X* | 匹配0个或任意多个x |
X+ | 匹配至少1个x |
X{m,n} | 匹配最少m个,最多n个x |
分组 | |
(?:x) | 匹配x但不记录匹配结果 |
X(?=y) | 当x后接y时,匹配x |
X(?!y) | 当x 后不是y时匹配x |
引用 | |
\1……\9,$1……$9 | 返回9个在模式匹配期间找到的,最近保存的部分 |
或模式 | |
X|y|z | 匹配x或y或z |
相关文章推荐
- 【JavaScript 5—基础知识点】:正则表达式(笔记)
- 完整的堆栈JavaScript路(十五)HTML5 focus 扩大 (扩展点)
- servlet和JSP 对比区别
- js中获取上下文路径
- jackson下载
- JavaScript Math和Number对象
- 文字匹配解析例子(读取Json 格式配置文件)
- Hibernate实体生成JSON的问题及解决
- 神秘的js执行顺序
- fastjson生成和解析json数据
- Django笔记---项目报错之“xxx is not JSON serializable”
- JavaScript 物理和重力实验
- extjs 4.2 高度自适应
- 更轻的JSON
- 菜单栏始终浮动在顶部 js
- js正则匹配出所有图片及图片地址src的方法
- js 传递function并调用function
- 常用JavaScript代码
- SSH返回Json格式的数据
- JavaScript开发规范