JavaScript中正则表达式判断匹配规则及常用方法


Posted in Javascript onAugust 03, 2017

字符串是编程时涉及到的最多的一种数据结构,对字符串进行操作的需求几乎无处不在。 正则表达式是一种用来匹配字符串的强有力的武器。它的设计思想是用一种描述性的语言来给字符串定义一个规则,凡是符合规则的字符串,我们就认为它“匹配”了。 

\d可以匹配一个数字                 '00\d'可以匹配'007' ,'\d\d\d'可以匹配'010'
\w可以匹配一个字母或数字      '\w\w'可以匹配'js'
\s可以匹配一个空格(也包括Tab等空白符)
\DWS都是表示匹配与小写字母相反的匹配关系
\数字n表示指向第n个分组捕获到的字符串文本的一个引用,能够再次被匹配       /(\d+)(0*)\1/可以匹配‘22300223'
.可以匹配任意字符                  'js.'可以匹配'jsp'、'jss'、'js!' 

正则表达式量词:

*表示任意个字符(包括0个)
+表示至少一个字符
?表示0个或1个字符
{n}表示n个字符
{n,m}表示n-m个字符 

A|B可以匹配A或B       (J|j)ava(S|s)cript可以匹配'JavaScript'、'Javascript'、'javaScript'或者'javascript'

^表示行的开头          ^\d表示必须以数字开头

$表示行的结束          \d$表示必须以数字结束

[]表示范围,字符类                          

[a-zA-Z\_\$][0-9a-zA-Z\_\$]*可以匹配由字母或下划线、$开头,后接任意个由一个数字、字母或者下划线、$组成的字符串,也就是JavaScript允许的变量名

[a-zA-Z\_\$][0-9a-zA-Z\_\$]{0, 19}更精确地限制了变量的长度是1-20个字符(前面1个字符+后面最多19个字符)

[] 中的^ 表示排除某个字符 

[^#?] 表示除了?和#的所有字符     

()表示捕获型分组,可以将匹配的字符串进行分组,提取子串。

如果正则表达式中定义了组,就可以在RegExp对象上用exec()方法提取出子串来。

exec()匹配成功后,返回一个Array,第一个元素是正则表达式匹配到的整个字符串,后面的字符串表示匹配成功的子串。

exec()匹配失败时返回null。

^(\d{3})-(\d{3,8})$分别定义了两个组,可以直接从匹配的字符串中提取出区号和本地号码:

var re = /^(\d{3})-(\d{3,8})$/;
re.exec('010-12345'); // ['010-12345', '010', '12345']
re.exec('010 12345'); // null 

(?:) 分组不想被捕获的时候使用,可以提高程序执行速度,非捕获型分组不会干扰捕获型分组编号。

用正则表达式切分字符串比用固定的字符更灵活

'a,b;; c d'.split(/[\s\,\;]+/); // ['a', 'b', 'c', 'd']

RegExp对象的test()方法用于测试给定的字符串是否符合条件。

var re = /^\d{3}\-\d{3,8}$/;
re.test('010-12345'); // true
re.test('010-1234x'); // false

需要特别指出的是,正则匹配默认是贪婪匹配,也就是匹配尽可能多的字符。

var re = /^(\d+)(0*)$/;
re.exec('102300'); // ['102300', '102300', '']

由于\d+采用贪婪匹配,直接把后面的0全部匹配了,结果0*只能匹配空字符串了。

加个?就可以让\d+采用非贪婪匹配:

var re = /^(\d+?)(0*)$/;
re.exec('102300'); // ['102300', '1023', '00']

特殊标志

g标志 ,表示全局匹配

i标志,表示忽略大小写

m标志,表示执行多行匹配 

需要使用转义符' \ '的15个特殊字符

/ \ [ ] ( ) { } ? + * | . ^ $

总结

以上所述是小编给大家介绍的JavaScript中正则表达式判断匹配规则及常用方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
JavaScript将相对地址转换为绝对地址示例代码
Jul 19 Javascript
jquery实现textarea 高度自适应
Mar 11 Javascript
JavaScript学习笔记之数组去重
Mar 23 Javascript
41个Web开发者必须收藏的JavaScript实用技巧
Jul 22 Javascript
JavaScript计算值然后把值嵌入到html中的实现方法
Oct 29 Javascript
解决ionic和angular上拉加载的问题
Aug 03 Javascript
微信网页授权并获取用户信息的方法
Jul 30 Javascript
优雅的在React项目中使用Redux的方法
Nov 10 Javascript
10行代码实现微信小程序滑动tab切换
Dec 28 Javascript
javascript系统时间设置操作示例
Jun 17 Javascript
怎么理解wx.navigateTo的events参数使用详情
May 18 Javascript
浅谈TypeScript 索引签名的理解
Oct 16 Javascript
vue 2.0封装model组件的方法
Aug 03 #Javascript
jQuery实现上传图片前预览效果功能
Aug 03 #jQuery
详解基于vue的移动web app页面缓存解决方案
Aug 03 #Javascript
Bootstrap与Angularjs的模态框实例代码
Aug 03 #Javascript
基于 Bootstrap Datetimepicker 联动
Aug 03 #Javascript
详解react-webpack2-热模块替换[HMR]
Aug 03 #Javascript
webpack开发跨域问题解决办法
Aug 03 #Javascript
You might like
PHP写的获取各搜索蜘蛛爬行记录代码
2012/08/21 PHP
php基于Fleaphp框架实现cvs数据导入MySQL的方法
2016/02/23 PHP
基于thinkPHP类的插入数据库操作功能示例
2017/01/06 PHP
Laravel基础-关于引入公共文件的两种方式
2019/10/18 PHP
jQuery toggleClass应用实例(附效果图)
2014/04/06 Javascript
Jquery节点遍历next与nextAll方法使用示例
2014/07/22 Javascript
使用iojs的jsdom库实现同步系统时间
2015/04/20 Javascript
JS+CSS实现美化的下拉列表框效果
2015/08/11 Javascript
js实现的页面矩阵图形变换特效
2016/01/26 Javascript
js实现StringBuffer的简单实例
2016/09/02 Javascript
ReactNative 之FlatList使用及踩坑封装总结
2017/11/29 Javascript
微信小程序-form表单提交代码实例
2019/04/29 Javascript
jQuery+ajax实现批量删除功能完整示例
2019/06/06 jQuery
使用react context 实现vue插槽slot功能
2019/07/18 Javascript
js实现点击选项置顶动画效果
2020/08/25 Javascript
vue界面发送表情的实现代码
2020/09/11 Javascript
JavaScript实现网页动态生成表格
2020/11/25 Javascript
[03:46]DAC趣味视频-中文考试.mp4
2017/04/02 DOTA
python分割和拼接字符串
2013/11/01 Python
Python深入学习之上下文管理器
2014/08/31 Python
Python实现获取网站PR及百度权重
2015/01/21 Python
自己使用总结Python程序代码片段
2015/06/02 Python
Python中time模块和datetime模块的用法示例
2016/02/28 Python
使用Pyinstaller的最新踩坑实战记录
2017/11/08 Python
详解Python发送email的三种方式
2018/10/18 Python
python实现发送form-data数据的方法详解
2019/09/27 Python
python时间序列数据转为timestamp格式的方法
2020/08/03 Python
Pycharm添加虚拟解释器报错问题解决方案
2020/10/13 Python
css3 中的新特性加强记忆详解
2016/04/16 HTML / CSS
Bogner美国官网:滑雪服中的”Dior”
2018/01/30 全球购物
this关键字的含义
2015/04/08 面试题
护理专业优质毕业生自荐书
2014/01/31 职场文书
幼儿园招生广告
2014/03/19 职场文书
考察现实表现材料
2014/05/19 职场文书
教师求职信
2014/06/17 职场文书
2015年政教主任工作总结
2015/07/23 职场文书