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字符串String和Array操作的有趣方法
Dec 18 Javascript
js中parseInt函数浅谈
Jul 31 Javascript
IE浏览器中图片onload事件无效的解决方法
Apr 29 Javascript
javascript定义变量时加var与不加var的区别
Dec 22 Javascript
jquery自定义插件——window的实现【示例代码】
May 06 Javascript
深入理解jquery自定义动画animate()
May 24 Javascript
js捕捉键盘事件和按键键值的方法
Oct 10 Javascript
整理一下常见的IE错误
Nov 18 Javascript
Vue实现购物车功能
Apr 27 Javascript
JavaScript数据结构与算法之二叉树实现查找最小值、最大值、给定值算法示例
Mar 01 Javascript
微信小程序new Date()方法失效问题解决方法
Jul 29 Javascript
React Native登录之指纹登录篇的示例代码
Nov 03 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中获取系统信息的方法
2013/06/25 PHP
ThinkPHP通过AJAX返回JSON的两种实现方法
2014/12/18 PHP
PHP使用Mysqli类库实现完美分页效果的方法
2016/04/07 PHP
PHP带节点操作的无限分类实现方法详解
2016/11/09 PHP
PHP使用ActiveMQ实例
2018/02/05 PHP
PHP中in_array的隐式转换的解决方法
2018/03/06 PHP
Javascript YUI 读码日记之 YAHOO.util.Dom - Part.2 0
2008/03/22 Javascript
原生Js与jquery的多组处理, 仅展开一个区块的折叠效果
2011/01/09 Javascript
HTML中的setCapture和releaseCapture使用介绍
2012/03/21 Javascript
基于jquery的跟随屏幕滚动代码
2012/07/24 Javascript
Three.js源码阅读笔记(物体是如何组织的)
2012/12/27 Javascript
JS Map 和 List 的简单实现代码
2013/07/08 Javascript
javascript遍历控件实例详细解析
2014/01/10 Javascript
JavaScript学习笔记之JS对象
2015/01/22 Javascript
JQuery 在文档中查找指定name的元素并移除的实现方法
2016/05/19 Javascript
jquery 属性选择器(匹配具有指定属性的元素)
2016/09/06 Javascript
JavaScript实现瀑布流以及加载效果
2017/02/11 Javascript
关于react-router的几种配置方式详解
2017/07/24 Javascript
angular2路由切换改变页面title的示例代码
2017/08/23 Javascript
EasyUI的DataGrid绑定Json数据源的示例代码
2017/12/16 Javascript
react quill中图片上传由默认转成base64改成上传到服务器的方法
2019/10/30 Javascript
详解Python中的文件操作
2016/08/28 Python
解决pycharm运行出错,代码正确结果不显示的问题
2018/11/30 Python
ET Mall东森购物网:东森严选
2017/03/06 全球购物
2019年Java面试必问之经典试题
2012/09/12 面试题
急诊科护士自我鉴定
2013/10/14 职场文书
军训鉴定表自我鉴定
2014/02/13 职场文书
运输服务质量承诺书
2014/03/27 职场文书
经济国贸专业求职信
2014/06/18 职场文书
公安机关纪律作风整顿个人剖析材料材料
2014/10/10 职场文书
绿色校园广播稿
2014/10/13 职场文书
学校捐款活动总结
2015/05/09 职场文书
MySQL锁机制
2021/04/05 MySQL
JavaScript实现显示和隐藏图片
2021/04/29 Javascript
sql server 累计求和实现代码
2022/02/28 SQL Server
「魔导具师妲莉亚永不妥协~从今天开始的自由职人生活~」1、2卷发售宣传CM公开
2022/03/21 日漫