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 相关文章推荐
javascript 遍历验证所有文本框的值
Aug 27 Javascript
jQuery之选择组件的深入解析
Jun 19 Javascript
jQuery实现用户注册的表单验证示例
Aug 28 Javascript
Angular.JS利用ng-disabled属性和ng-model实现禁用button效果
Apr 05 Javascript
详解在Vue中有条件地使用CSS类
Sep 30 Javascript
js处理包含中文的字符串实例
Oct 11 Javascript
浅谈webpack下的AOP式无侵入注入
Nov 12 Javascript
JavaScript类数组对象转换为数组对象的方法实例分析
Jul 24 Javascript
vue路由守卫+登录态管理实例分析
May 21 Javascript
Vue3 源码导读(推荐)
Oct 14 Javascript
JavaScript中break、continue和return的用法区别实例分析
Mar 02 Javascript
详解Vue中的MVVM原理和实现方法
Jul 15 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
php实现批量压缩图片文件大小的脚本
2014/07/04 PHP
PHP动态生成指定大小随机图片的方法
2016/03/25 PHP
PHP+fiddler抓包采集微信文章阅读数点赞数的思路详解
2019/12/20 PHP
php设计模式之组合模式实例详解【星际争霸游戏案例】
2020/03/27 PHP
一个不错的用JavaScript实现的UBB编码函数
2007/03/09 Javascript
一个符号插入器 中用到的js代码
2007/09/04 Javascript
jQuery DIV弹出效果实现代码
2009/07/03 Javascript
javascript学习笔记(十八) 获得页面中的元素代码
2012/06/20 Javascript
Javascript函数式编程语言
2015/10/11 Javascript
js基于FileSaver.js 浏览器导出Excel文件的示例
2017/08/15 Javascript
AngularJS通过ng-Img-Crop实现头像截取的示例
2017/08/17 Javascript
JS实现前端缓存的方法
2017/09/21 Javascript
jQuery Datatables表头不对齐的解决办法
2017/11/27 jQuery
Vue2.0结合webuploader实现文件分片上传功能
2018/03/09 Javascript
vue中手机号,邮箱正则验证以及60s发送验证码的实例
2018/03/16 Javascript
vue富文本框(插入文本、图片、视频)的使用及问题小结
2018/08/17 Javascript
vue2.0实现列表数据增加和删除
2020/06/17 Javascript
剖析Python的Tornado框架中session支持的实现代码
2015/08/21 Python
Python实现中文数字转换为阿拉伯数字的方法示例
2017/05/26 Python
在cmd命令行里进入和退出Python程序的方法
2018/05/12 Python
python 移除字符串尾部的数字方法
2018/07/17 Python
python实现在cmd窗口显示彩色文字
2019/06/24 Python
django在保存图像的同时压缩图像示例代码详解
2020/02/11 Python
Python图片处理模块PIL操作方法(pillow)
2020/04/07 Python
关于python scrapy中添加cookie踩坑记录
2020/11/17 Python
英国最大的纸工艺品商店:CraftStash
2018/12/01 全球购物
买房委托公证书
2014/04/08 职场文书
教书育人演讲稿
2014/09/11 职场文书
2015年财务试用期工作总结
2014/12/24 职场文书
2015年班长个人工作总结
2015/04/03 职场文书
芙蓉镇观后感
2015/06/10 职场文书
社区志愿服务活动感想
2015/08/07 职场文书
如何让vue长列表快速加载
2021/03/29 Vue.js
浅谈Web Storage API的使用
2021/06/23 Javascript
DE1107机评
2022/04/05 无线电
MySQL事务的ACID特性以及并发问题方案
2022/07/15 MySQL