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中的函数
Jan 22 Javascript
JavaScript 模式之工厂模式(Factory)应用介绍
Nov 15 Javascript
js弹出div并显示遮罩层
Feb 12 Javascript
创建你的第一个AngularJS应用的方法
Jun 16 Javascript
基于JavaScript实现网页倒计时自动跳转代码
Dec 28 Javascript
微信小程序 教程之事件
Oct 18 Javascript
微信小程序 石头剪刀布实例代码
Jan 04 Javascript
jQuery EasyUI之验证框validatebox实例详解
Apr 10 jQuery
iscroll动态加载数据完美解决方法
Jul 18 Javascript
Node.js EventEmmitter事件监听器用法实例分析
Jan 07 Javascript
详解Vue用cmd创建项目
Feb 12 Javascript
Vue 实现可视化拖拽页面编辑器
Feb 01 Vue.js
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
使用sockets:从新闻组中获取文章(二)
2006/10/09 PHP
WordPress主题中添加文章列表页页码导航的PHP代码实例
2015/12/22 PHP
PHP Yaf框架的简单安装使用教程(推荐)
2016/06/08 PHP
php array_slice 取出数组中的一段序列实例
2016/11/04 PHP
对php 判断http还是https,以及获得当前url的方法详解
2019/01/15 PHP
PHP序列化和反序列化深度剖析实例讲解
2020/12/29 PHP
javascript 设计模式之单体模式 面向对象学习基础
2010/04/18 Javascript
JS 实现Table相同行的单元格自动合并示例代码
2013/08/27 Javascript
js和jquery使按钮失效为不可用状态的方法
2014/01/26 Javascript
jQuery中prop()方法用法实例
2015/01/05 Javascript
DOM操作一些常用的属性汇总
2015/03/13 Javascript
jquery实现的仿天猫侧导航tab切换效果
2015/08/24 Javascript
判断数组的最佳方法(推荐)
2016/10/11 Javascript
vue中使用vue-router切换页面时滚动条自动滚动到顶部的方法
2017/11/28 Javascript
详解vue组件开发脚手架
2018/06/15 Javascript
vue系列之requireJs中引入vue-router的方法
2018/07/18 Javascript
小程序获取周围IBeacon设备的方法
2018/10/31 Javascript
vue-router 路由传参用法实例分析
2020/03/06 Javascript
vue表单验证之禁止input输入框输入空格
2020/12/03 Vue.js
python机器学习之神经网络(二)
2017/12/20 Python
pyqt5对用qt designer设计的窗体实现弹出子窗口的示例
2019/06/19 Python
详解基于python-django框架的支付宝支付案例
2019/09/23 Python
在django中实现choices字段获取对应字段值
2020/07/12 Python
基于python tkinter的点名小程序功能的实例代码
2020/08/22 Python
python图片合成的示例
2020/11/09 Python
html5中的input新属性range使用记录
2014/09/05 HTML / CSS
会计毕业生求职简历的自我评价
2013/10/20 职场文书
十八大报告观后感
2014/01/28 职场文书
舞蹈教育学专业求职信
2014/06/29 职场文书
毕业论文致谢范文
2015/05/14 职场文书
烈士陵园观后感
2015/06/08 职场文书
部门主管竞聘书
2015/09/15 职场文书
大学生自我鉴定怎么写
2019/05/07 职场文书
用python删除文件夹中的重复图片(图片去重)
2021/05/12 Python
Nginx设置HTTPS的方法步骤 443证书配置方法
2022/03/21 Servers
Mysql表数据比较大情况下修改添加字段的方法实例
2022/06/28 MySQL