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 相关文章推荐
js中关于String对象的replace使用详解
May 24 Javascript
关于javascript event flow 的一个bug详解
Sep 17 Javascript
js读取csv文件并使用json显示出来
Jan 09 Javascript
JS实现自动阅读单词(有道单词本添加功能)
Nov 14 Javascript
JS实现的系统调色板完整实例
Dec 21 Javascript
详解AngularJS脏检查机制及$timeout的妙用
Jun 19 Javascript
详解用vue编写弹出框组件
Jul 04 Javascript
在vscode里使用.vue代码模板的方法
Apr 28 Javascript
jQuery实现ajax回调函数带入参数的方法示例
Jun 26 jQuery
ES6基础之解构赋值(destructuring assignment)
Feb 21 Javascript
express如何解决ajax跨域访问session失效问题详解
Jun 20 Javascript
通过图带你深入了解vue的响应式原理
Jun 21 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分页函数
2006/10/09 PHP
php实现可用于mysql,mssql,pg数据库操作类
2014/12/13 PHP
php查询mssql出现乱码的解决方法
2014/12/29 PHP
php实现图片等比例缩放代码
2015/07/23 PHP
yii2中LinkPager增加总页数和总记录数的实例
2017/08/28 PHP
让iframe框架网页在任何浏览器下自动伸缩
2006/08/18 Javascript
js文字滚动停顿效果代码
2008/06/28 Javascript
基于jquery的动态创建表格的插件
2011/04/05 Javascript
浏览器加载、渲染和解析过程黑箱简析
2012/11/29 Javascript
两个数组去重的JS代码
2013/12/04 Javascript
自己使用jquery写的一个无缝滚动的插件
2014/04/30 Javascript
jQuery过滤选择器用法分析
2015/02/10 Javascript
基于JavaScript实现div层跟随滚动条滑动
2016/01/12 Javascript
js 截取或者替换字符串中的数字实现方法
2016/06/13 Javascript
AngularJS的ng Http Request与response格式转换方法
2016/11/07 Javascript
利用Javascript开发一个二维周视图日历
2017/12/14 Javascript
浅谈node中的cluster集群
2018/06/02 Javascript
Angular-UI Bootstrap组件实现警报功能
2018/07/16 Javascript
NodeJS服务器实现gzip压缩的示例代码
2018/10/12 NodeJs
this.$toast() 了解一下?
2019/04/18 Javascript
在VUE中实现文件下载并判断状态的方法
2019/11/08 Javascript
python中list循环语句用法实例
2014/11/10 Python
Python聚类算法之基本K均值实例详解
2015/11/20 Python
python中的lambda表达式用法详解
2016/06/22 Python
Django 生成登陆验证码代码分享
2017/12/12 Python
浅谈Python描述数据结构之KMP篇
2020/09/06 Python
用Python制作音乐海报
2021/01/26 Python
分享30个新鲜的CSS3打造的精美绚丽效果(附演示下载)
2012/12/28 HTML / CSS
css3实现小箭头各种图形效果
2020/07/08 HTML / CSS
方太官方网上商城:销售方太抽油烟机、燃气灶、消毒柜等
2017/01/17 全球购物
英国鲜花递送:Blossoming Gifts
2020/07/10 全球购物
元旦活动感言
2014/03/08 职场文书
2014矛盾纠纷排查调处工作总结
2014/12/09 职场文书
合作意向书怎么写
2019/06/24 职场文书
JS实现扫雷项目总结
2021/05/19 Javascript
Nginx反向代理配置的全过程记录
2021/06/22 Servers