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 相关文章推荐
CSS+JS构建的图片查看器
Jul 22 Javascript
Javascript 构造函数 实例分析
Nov 26 Javascript
理解Javascript_05_原型继承原理
Oct 13 Javascript
jQuery实现的Div窗口震动特效
Jun 09 Javascript
Jquery修改页面标题title其它JS失效的解决方法
Oct 31 Javascript
AngularJs concepts详解及示例代码
Sep 01 Javascript
jquery动态创建div与input的实例代码
Oct 12 Javascript
angular.js实现购物车功能
Oct 23 Javascript
JS引用传递与值传递的区别与用法分析
Jun 01 Javascript
浅谈Webpack核心模块tapable解析
Sep 11 Javascript
微信小程序拍照和摄像功能实现方法示例
Feb 01 Javascript
JavaScript 事件捕获冒泡与捕获详情
Nov 11 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程序之die调试法 快速解决错误
2009/09/17 PHP
php报表之jpgraph柱状图实例代码
2011/08/22 PHP
使用PHP导出Word文档的原理和实例
2013/10/21 PHP
详解PHP对象的串行化与反串行化
2016/01/24 PHP
PHP实现通过URL提取根域名
2016/03/31 PHP
Paypal实现循环扣款(订阅)功能
2017/03/23 PHP
Thinkphp结合AJAX长轮询实现PC与APP推送详解
2017/07/31 PHP
关于eval 与new Function 到底该选哪个?
2013/04/17 Javascript
JavaScript中Number.MAX_VALUE属性的使用方法
2015/06/04 Javascript
javascript将中国数字格式转换成欧式数字格式的简单实例
2016/08/02 Javascript
seajs学习之模块的依赖加载及模块API的导出
2016/10/20 Javascript
node.js学习之base64编码解码
2016/10/21 Javascript
JS中用try catch对代码运行的性能影响分析
2016/12/26 Javascript
underscore之Chaining_动力节点Java学院整理
2017/07/10 Javascript
angular或者js怎么确定选中ul中的哪几个li
2017/08/16 Javascript
AngularJS动态添加数据并删除的实例
2018/02/27 Javascript
JavaScript中BOM对象原理与用法分析
2019/07/09 Javascript
Vue-axios-post数据后端接不到问题解决
2020/01/09 Javascript
深入理解webpack process.env.NODE_ENV配置
2020/02/23 Javascript
jquery实现简易验证插件封装
2020/09/13 jQuery
jQuery使用hide()、toggle()函数实现相机品牌展示隐藏功能
2021/01/29 jQuery
[02:10]DOTA2 TI10勇士令状玩法及不朽Ⅰ展示:焕新世界,如你所期
2020/05/29 DOTA
使用python将大量数据导出到Excel中的小技巧分享
2018/06/14 Python
python获取服务器响应cookie的实例
2018/12/28 Python
Pandas分组与排序的实现
2019/07/23 Python
Python二元赋值实用技巧解析
2019/10/25 Python
TensorFlow学习之分布式的TensorFlow运行环境
2020/02/05 Python
列车长先进事迹材料
2014/01/25 职场文书
高中毕业生登记表自我鉴定范文
2014/03/18 职场文书
国旗下的演讲稿
2014/05/08 职场文书
公司任命书范本
2014/06/04 职场文书
交通事故委托书范本(2篇)
2014/09/21 职场文书
2015年团队工作总结范文
2015/05/04 职场文书
初中体育教学随笔
2015/08/15 职场文书
优秀班干部主要事迹材料
2015/11/04 职场文书
MySQL 不等于的三种使用及区别
2021/06/03 MySQL