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 避免闭包引发的问题
Mar 17 Javascript
jQuery的实现原理的模拟代码 -3 事件处理
Aug 03 Javascript
Js 时间函数getYear()的使用问题探讨
Apr 01 Javascript
javascript写的一个模拟阅读小说的程序
Apr 04 Javascript
Javascript模仿淘宝信用评价实例(附源码)
Nov 26 Javascript
利用js+css+html实现固定table的列头不动
Dec 08 Javascript
JS实现的简单轮播图运动效果示例
Dec 22 Javascript
微信公众号菜单配置微信小程序实例详解
Mar 31 Javascript
提升页面加载速度的插件InstantClick
Sep 12 Javascript
Vue SPA单页应用首屏优化实践
Jun 28 Javascript
javascript系统时间设置操作示例
Jun 17 Javascript
基于layPage插件实现两种分页方式浅析
Jul 27 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语法(5)
2006/10/09 PHP
linux系统上支持php的 iconv()函数的方法
2011/10/01 PHP
PHP字符串的编码问题的详细介绍
2013/04/27 PHP
PHP Curl出现403错误的解决办法
2014/05/29 PHP
PHP中生成UUID自定义函数分享
2015/06/10 PHP
微信自定义菜单的创建/查询/取消php示例代码
2016/08/05 PHP
PHP实现的简单操作SQLite数据库类与用法示例
2017/06/19 PHP
ExtJS 2.0实用简明教程 之ExtJS版的Hello
2009/04/29 Javascript
一个原生的用户等级的进度条
2010/07/03 Javascript
JavaScript判断窗口是否最小化的代码(跨浏览器)
2010/08/01 Javascript
JavaScript 命名空间 使用介绍
2013/08/29 Javascript
javascript实现五星评价代码(源码下载)
2015/08/11 Javascript
基于javascript实现listbox左右移动
2016/01/29 Javascript
jQuery+CSS3+Html5实现弹出层效果实例代码(附源码下载)
2016/05/16 Javascript
JS实现可编辑的后台管理菜单功能【附demo源码下载】
2016/09/13 Javascript
jQuery插件WebUploader实现文件上传
2016/11/07 Javascript
利用select实现年月日三级联动的日期选择效果【推荐】
2016/12/13 Javascript
AngularJS 购物车全选/取消全选功能的实现方法
2017/08/14 Javascript
20170918 前端开发周报之JS前端开发必看
2017/09/18 Javascript
JS实现方形抽奖效果
2018/08/27 Javascript
[03:24]CDEC.Y赛前采访 努力备战2016国际邀请赛中国区预选赛
2016/06/25 DOTA
[01:21]DOTA2 新英雄 森海飞霞
2020/12/18 DOTA
python实现从一组颜色中找出与给定颜色最接近颜色的方法
2015/03/19 Python
Python中协程用法代码详解
2018/02/10 Python
python验证码识别教程之灰度处理、二值化、降噪与tesserocr识别
2018/06/04 Python
wxPython实现整点报时
2019/11/18 Python
VS2019+python3.7+opencv4.1+tensorflow1.13配置详解
2020/04/16 Python
python 轮询执行某函数的2种方式
2020/05/03 Python
中国一家专注拼团的社交购物网站:拼多多
2018/06/13 全球购物
微软台湾官方网站:Microsoft台湾
2018/08/15 全球购物
机电一体化求职信
2014/03/10 职场文书
养生餐厅创业计划书范文
2014/03/26 职场文书
新学期开学演讲稿
2014/05/24 职场文书
中学生运动会口号
2014/06/07 职场文书
绿色校园广播稿
2014/10/13 职场文书
先进典型发言材料
2014/12/30 职场文书