javascript正则表达式总结


Posted in Javascript onFebruary 29, 2016

工具

Regexpal是一个在线Javascript正则表达式处理器,地址是:http://www.regexpal.com

学习正则重要的是实践操作,不妨举个栗子:

匹配号码:707-827-7019

字符组匹配

[0-9][0-9][0-9]-[0-9][0-9][0-9]-[0-9][0-9][0-9][0-9]
\d匹配任意阿拉伯数字
\D匹配任何非阿拉伯数字

.匹配任意字符

\d\d\d\D\d\d\d\D\d\d\d\d\D
\d\d\d.\d\d\d.\d\d\d\d.

捕获分组与后向应用

用圆括号()创建分组,用\1来对捕获分组内容进行向后引用

(\d)\d\1   则匹配707

完整匹配号码:

^(\(\d{3}\)|^\d{3}[.-]?)?\d{3}[.-]?\d{4}$
^ 表示一行起始位置
( 表示捕获分组的起始符
\( 表示左括号
\d{3} 表示匹配三位数字
\) 表示右括号
| 表示选择
[.-]? 匹配一个可选的点号或连字符
) 捕获分组的结束符
? 表示分组可选
$ 表示行结束为止

边界

匹配行或字符串起始位置使用脱字符 ^
匹配行或字符串末尾位置使用美元符 $

量词

量词默认是贪心的
贪心的量词会首先匹配整个字符串。尝试匹配时,他会选定尽可能多的内容,也就是整个输入。量词首先匹配整个字符,如果失败则回退一个字符再次尝试。这个过程就叫做 回溯。
懒惰的量词是从目标的起始位置开始寻找匹配。每次检查字符串的一个字符,寻找他要匹配的内容。最后,他会尝试匹配整个字符串。
占有量词会覆盖整个目标,然后尝试寻找匹配内容,但是他只尝试一次,不会回溯。
如使用 .* 匹配任何字符零次或多次

贪心量词

使用花括号{}可限制某个模式在某个范围内匹配的次数,另外,未经修饰的量词就是贪心量词
7{1,}与7+
7{0,}与7*
7?与7{0,1}
本质上则是一样
7{m,n} 则会匹配m到n次

懒惰量词

末尾加上?则使量词变懒惰
7?? 首先7?匹配零个或一个7,懒惰后不会匹配任何内容
7*? 匹配零个7
7+? 匹配一个7
7{m,n}? 匹配m个7

关于正则匹配html,xml标签,下次再写

Javascript 相关文章推荐
AutoSave/自动存储功能实现
Mar 24 Javascript
javascript模版引擎-tmpl的bug修复与性能优化分析
Oct 23 Javascript
基于Javascript实现倒计时功能
Feb 22 Javascript
AngularJS中watch监听用法分析
Nov 04 Javascript
JavaScript实现获取用户单击body中所有A标签内容的方法
Jun 05 Javascript
微信小程序对接七牛云存储的方法
Jul 30 Javascript
JS中this的指向以及call、apply的作用
May 06 Javascript
vue如何根据网站路由判断页面主题色详解
Nov 02 Javascript
JQuery搜索框自动补全(模糊匹配)功能实现示例
Jan 08 jQuery
react同构实践之实现自己的同构模板
Mar 13 Javascript
微信二次分享报错invalid signature问题及解决方法
Apr 01 Javascript
小程序使用wxs解决wxml保留2位小数问题
Dec 13 Javascript
javascript计时器编写过程与实现方法
Feb 29 #Javascript
javascript插件开发的一些感想和心得
Feb 28 #Javascript
详解Javascript中的Object对象
Feb 28 #Javascript
Jquery跨浏览器文本复制插件Zero Clipboard的使用方法
Feb 28 #Javascript
JavaScript实现iframe自动高度调整和不同主域名跨域
Feb 27 #Javascript
Javascript技术栈中的四种依赖注入小结
Feb 27 #Javascript
javascript的 {} 语句块详解
Feb 27 #Javascript
You might like
php安全开发 添加随机字符串验证,防止伪造跨站请求
2013/02/14 PHP
PHP中copy on write写时复制机制介绍
2014/05/13 PHP
PHP如何实现Unicode和Utf-8编码相互转换
2015/07/29 PHP
Linux系统下使用XHProf和XHGui分析PHP运行性能
2015/12/08 PHP
Yii2中OAuth扩展及QQ互联登录实现方法
2016/05/16 PHP
iis 7下安装laravel 5.4环境的方法教程
2017/06/14 PHP
jquerymobile checkbox及时刷新才能获取其准确值
2012/04/14 Javascript
基于jquery库的tab新形式使用
2012/11/16 Javascript
js禁止页面使用右键(简单示例代码)
2013/11/13 Javascript
jquery.uploadify插件在chrome浏览器频繁崩溃解决方法
2015/03/01 Javascript
JS对HTML表格进行增删改操作
2016/08/22 Javascript
Vue获取DOM元素样式和样式更改示例
2017/03/07 Javascript
Js中将Long转换成日期格式的实现方法
2018/06/05 Javascript
微信小程序中this.data与this.setData的区别详解
2018/09/17 Javascript
VUE实现可随意拖动的弹窗组件
2018/09/25 Javascript
node Buffer缓存区常见操作示例
2019/05/04 Javascript
uni-app之APP和小程序微信授权方法
2019/05/09 Javascript
vue elementui el-form rules动态验证的实例代码详解
2019/05/23 Javascript
js全屏事件fullscreenchange 实现全屏、退出全屏操作
2019/09/17 Javascript
CountUp.js数字滚动插件使用方法详解
2019/10/17 Javascript
微信小程序实现侧边分类栏
2019/10/21 Javascript
jQuery表单校验插件validator使用方法详解
2020/02/18 jQuery
springboot+vue实现文件上传下载
2020/11/17 Vue.js
详解Vue.js 可拖放文本框组件的使用
2021/03/03 Vue.js
[01:00:53]2018DOTA2亚洲邀请赛3月29日 小组赛B组 iG VS Secret
2018/03/30 DOTA
解决python中无法自动补全代码的问题
2018/12/04 Python
Python实现的远程文件自动打包并下载功能示例
2019/07/12 Python
Django 框架模型操作入门教程
2019/11/05 Python
Python使用requests xpath 并开启多线程爬取西刺代理ip实例
2020/03/06 Python
解决django接口无法通过ip进行访问的问题
2020/03/27 Python
使用python无账号无限制获取企查查信息的实例代码
2020/04/17 Python
百思买美国官网:Best Buy
2016/07/28 全球购物
无偿献血倡议书
2014/04/14 职场文书
《骑牛比赛》教后反思
2014/04/22 职场文书
垂直极限观后感
2015/06/08 职场文书
浅析Python中的随机采样和概率分布
2021/12/06 Python