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 相关文章推荐
模拟select的代码
Oct 19 Javascript
jquery向上向下取整适合分页查询
Sep 06 Javascript
jQuery实现简单的间隔向上滚动效果
Mar 09 Javascript
异步JavaScript编程中的Promise使用方法
Jul 28 Javascript
javascript实现的网站访问量统计代码
Dec 20 Javascript
vue-cli webpack 引入jquery的方法
Jan 10 jQuery
在vue中使用G2图表的示例代码
Mar 19 Javascript
了解Javascript中函数作为对象的魅力
Jun 19 Javascript
vue实现树形结构样式和功能的实例代码
Oct 15 Javascript
JavaScript图片旋转效果实现方法详解
Jun 28 Javascript
jQuery实现异步上传一个或多个文件
Aug 17 jQuery
解决vue elementUI 使用el-select 时 change事件的触发问题
Nov 17 Vue.js
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
ThinkPHP应用模式扩展详解
2014/07/16 PHP
PHP使用pear自带的mail类库发邮件的方法
2015/07/08 PHP
PHP array_reverse() 函数原理及实例解析
2020/07/14 PHP
javascript 函数调用规则
2009/08/26 Javascript
写入cookie的JavaScript代码库 cookieLibrary.js
2009/10/24 Javascript
JavaScript显示当然日期和时间即年月日星期和时间
2013/10/29 Javascript
js实现的四级左侧网站分类菜单实例
2015/05/06 Javascript
详解js私有作用域中创建特权方法
2016/01/25 Javascript
JS图片定时翻滚效果实现方法
2016/06/21 Javascript
KnockoutJS 3.X API 第四章之事件event绑定
2016/10/10 Javascript
js实现点击图片自动提交action的简单方法
2016/10/16 Javascript
基于vue-ssr的静态网站生成器VuePress 初体验
2018/04/17 Javascript
JavaScript实现一个简易的计算器实例代码
2018/05/10 Javascript
微信小程序实现弹框效果
2020/05/26 Javascript
[01:25]2014DOTA2国际邀请赛 zhou分析LGD比赛情况
2014/07/14 DOTA
python引用DLL文件的方法
2015/05/11 Python
Python表示矩阵的方法分析
2017/05/26 Python
带你了解python装饰器
2017/06/15 Python
Python3实现的简单验证码识别功能示例
2018/05/02 Python
python 将dicom图片转换成jpg图片的实例
2020/01/13 Python
Python动态强类型解释型语言原理解析
2020/03/25 Python
Python+Kepler.gl轻松制作酷炫路径动画的实现示例
2020/06/02 Python
Pycharm中配置远程Docker运行环境的教程图解
2020/06/11 Python
canvas 橡皮筋式线条绘图应用方法
2019/02/13 HTML / CSS
美国最受欢迎的童装品牌之一:The Children’s Place
2016/07/23 全球购物
巴西最大的体育用品商城:Netshoes巴西
2016/11/29 全球购物
希尔顿酒店官方网站:Hilton Hotels
2017/06/01 全球购物
英国Boots旗下太阳镜网站:Boots Designer Sunglasses
2018/07/07 全球购物
RealTek面试题
2016/06/28 面试题
大学生村官事迹材料
2014/01/21 职场文书
放飞理想演讲稿
2014/09/09 职场文书
寒假社会实践个人总结
2015/03/06 职场文书
2015年银行信贷员工作总结
2015/05/19 职场文书
安全生产感想
2015/08/07 职场文书
教师素质教育心得体会
2016/01/19 职场文书
Nginx代理Redis哨兵主从配置的实现
2022/07/15 Servers