javascript正则表达式定义(语法)总结


Posted in Javascript onJanuary 08, 2016

本文讲述了javascript正则表达式定义(语法)。分享给大家供大家参考,具体如下:

正则表达式的2种定义方法:一种是直接调用RegExp(),第二种是直接用字面量来定义,即var re = /正则规则/;

2种定义方法本质都是调用RegExp()方法

在调用同一段正则代码的时候,ECMAScript3和ECMAScript5中表现完全不一样

function reg(){
 var re = /\sjavascript/;
 return re;
}

分别在ECMAScript3和ECMAScript5中调用reg()方法多次

在ECMAScript3中,调用的是同一个RegExp对象,在ECMAScript5中,调用的是不同的RegExp对象 因为在EXCMAScript5中每执行一次,就生成一个新的RegExp对象

所以在ECMAScript3中会造成程序的隐患,因为只要在一个地方对这个对象进行修改的话,所有调用到这个对象的地方都会变化。

1.直接量字符

在正则中一般都会直接匹配字符,如

/javascript/
会直接匹配字符javascript

还支持非字母的字符匹配,如:

\o    NUL字符(\u0000)

\t    制表符(\u0009)

\n    换行符(\u000A)

\v    垂直制表符(\u000B)

\f    换页符(\u000C)

\r    回车符(\u000D)

\xnn   由十六进制数nn指定的拉丁字符,例如,\x0A等价于\n

\uxxxx 由十六进制数xxxx指定的Unicode字符,例如\u0009等价于\t

\cX   控制字符^X,例如,\cJ等价于换行符\n

在正则表达式中,还有一些有特殊含义的标点符号,他们需要'\'来转义

^$.*+?=!:|\/()[]{}

2.字符类

[...]     方括号内的任意字符

[^...]    不在方括号内的任意字符

.        任意字符

\w      任何ASCII字符组成的单词,等价于[a-zA-Z0-9]

\W       任何不适ASCII字符组成的单词,等价于[^a-zA-Z0-9]

\s      任何Unicode空白符

\S      任何非Unicode空白符的字符,注意\w和\S不一样

\d      任何ASCII数值,等价于[0-9]

\D      除了ASCII数字之外的任何字符,等价于[^0-9]

[\b]     退格直接量(特例)

3.重复(次数)

?    0或1次

+    1次或多次

*    任意次

{n}        n次

{m,n}     最少m次,最多n次

{n,}       n次或n次以上

正则默认是贪婪匹配的

如[a+b+]      如果要匹配aaabb,它不会匹配ab和aab等,只会匹配aaabb

[a+?b+?]       这个会匹配aaab   为什么会产生这个区别呢?

答:+?是让正则非贪婪匹配,那么b这里只会匹配一个b,那为什么a会匹配3个呢?这是因为正则表达式的模式匹配总是会寻找字符串中第一个可能匹配的位置。

4.选项|分组|引用

|  用于分隔可供选择的字符,如[ab|cd],他既可以匹配ab也可以匹配cd,注意:选择项的尝试匹配次序是左→右,因此[a|ab],当a匹配通过了之后,就不匹配ab了,就算ab是更好的匹配

()  1.单独的项当成子表达式    /java(script)?/     可以匹配javascript和java   即圆括号部分形成子的表达式,可以对子表达式执行| * ?等操作

    2.完整的模式中定义子模式   后面的可以引用前面圆括号起来的表达式   /(['"])[a-z]\1/     \1引用的是第一个圆括号里的表达式,因此引用了['"]

    3.后部引用前面的子表达式  注意: /['"][a-z]['"]/这个正则的意思是     单引号或双引号加上一个小写字母加上一个单引号或者双引号,前后的单双引号不是匹配的如果你要匹配可以这么写[(['"])[a-z]\1]

\加数字     可以引用前面圆括号中的表达式   

5.制定匹配位置(锚点)

^    匹配字符串的开头,在多行检索中,匹配一行的开头

$    匹配字符串的结尾,在多行检索中,匹配一行的结尾

\b    匹配一个单词的边界,简言之,就是位于字符\w和\W之间的位置,或位于字符\w和字符串的开头或者结尾之间的位置

\B    匹配非单词边界的位置

(?=p)   零宽正向先行断言,要求接下来的字符都与p匹配,但不能包括匹配p的那些字符

(?!p)  零宽负向先行断言,要求接下来的字符不与p匹配

6.修饰符

写在正则表达式字面量//右侧的

i        执行不区分大小写的匹配

g        执行一个全局匹配,简言之,即找到所有的匹配,而不是在找到第一个之后就停止

m       多行匹配模式,^匹配一行的开头和字符串的开头,$匹配行的结束和字符串的结束    /java$/m   可以匹配  java\nfunc

注意:当正则表达式是全局的时候,每次exec() 和 test()的时候都会把当前设置的lastIndex设为当前的位置,再次执行的时候就会从lastIndex的位置开始执行,因此最好每次执行的时候lastIndex设置为0

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
jquery 插件学习(二)
Aug 06 Javascript
js 调用本地exe的例子(支持IE内核的浏览器)
Dec 26 Javascript
Js(JavaScript)中,弹出是或否的选择框示例(confirm用法的实例分析)
Jul 09 Javascript
js文本框输入点回车触发确定兼容IE、FF等
Nov 19 Javascript
按下回车键指向下一个位置的一个函数代码
Mar 10 Javascript
javascript闭包传参和事件的循环绑定示例探讨
Apr 17 Javascript
javascript setinterval 的正确语法如何书写
Jun 17 Javascript
jQuery实现标签页效果实战(4)
Feb 08 Javascript
JS实现颜色的10进制转化成rgba格式的方法
Sep 04 Javascript
前端防止用户重复提交js实现代码示例
Sep 07 Javascript
vue移动端实现手机左右滑动入场动画
Jun 17 Javascript
vue-resource:jsonp请求百度搜索的接口示例
Nov 09 Javascript
jquery限定文本框只能输入数字(整数和小数)
Jan 08 #Javascript
jQuery实现的鼠标滑过弹出放大图片特效
Jan 08 #Javascript
jQuery鼠标悬浮链接弹出跟随图片实例代码
Jan 08 #Javascript
javascript中select下拉框的用法总结
Jan 07 #Javascript
详解JS中Array对象扩展与String对象扩展
Jan 07 #Javascript
js创建对象的方法汇总
Jan 07 #Javascript
JavaScript截取、切割字符串的技巧
Jan 07 #Javascript
You might like
类的另类用法--数据的封装
2006/10/09 PHP
PHP+MYSQL开发工具及资源收藏
2007/01/02 PHP
php 删除cookie和浏览器重定向
2009/03/16 PHP
php+mysql事务rollback&commit示例
2010/02/08 PHP
php输出全球各个时区列表的方法
2015/03/31 PHP
PHP封装的MSSql操作类完整实例
2016/05/26 PHP
兼容IE与firefox火狐的回车事件(js与jquery)
2010/10/20 Javascript
JavaScript字符串对象fromCharCode方法入门实例(用于把Unicode值转换为字符串)
2014/10/17 Javascript
javascript实现window.print()去除页眉页脚
2014/12/30 Javascript
jquery+ajax实现跨域请求的方法
2015/01/20 Javascript
javascript中var的重要性分析
2015/02/11 Javascript
jQuery实现简单的DIV拖动效果
2016/02/19 Javascript
javascript 将共享属性迁移到原型中去的实现方法
2016/08/31 Javascript
详解为Angular.js内置$http服务添加拦截器的方法
2016/12/20 Javascript
深入理解Angularjs向指令传递数据双向绑定机制
2016/12/31 Javascript
老生常谈js中0到底是 true 还是 false
2017/03/08 Javascript
Angular.js前台传list数组由后台spring MVC接收数组示例代码
2017/07/31 Javascript
[00:35]DOTA2上海特级锦标赛 Newbee战队宣传片
2016/03/03 DOTA
用python + openpyxl处理excel2007文档思路以及心得
2014/07/14 Python
Python基于pycrypto实现的AES加密和解密算法示例
2018/04/10 Python
Python中 map()函数的用法详解
2018/07/10 Python
python+opencv实现高斯平滑滤波
2020/07/21 Python
Python二叉搜索树与双向链表转换算法示例
2019/03/02 Python
opencv3/python 鼠标响应操作详解
2019/12/11 Python
浅析python表达式4+0.5值的数据类型
2020/02/26 Python
带你学习Python如何实现回归树模型
2020/07/16 Python
CSS书写规范、顺序和命名规则
2014/03/06 HTML / CSS
html5版canvas自由拼图实例
2014/10/15 HTML / CSS
化学专业自荐信
2014/05/28 职场文书
采购部长岗位职责
2014/06/13 职场文书
普通话宣传标语
2014/06/26 职场文书
整改落实自查报告
2014/11/05 职场文书
新郎婚礼答谢词
2015/01/04 职场文书
秋菊打官司观后感
2015/06/03 职场文书
2016入党积极分子党校培训心得体会
2016/01/06 职场文书
SpringBoot+Redis实现布隆过滤器的示例代码
2022/03/17 Java/Android