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正则表达式获取分组内容的方法详解
Nov 15 Javascript
原生js获取宽高与jquery获取宽高的方法关系对比
Apr 04 Javascript
网页实时显示服务器时间和javscript自运行时钟
Jun 09 Javascript
深入理解JavaScript中的对象复制(Object Clone)
May 18 Javascript
js禁止浏览器的回退事件
Apr 20 Javascript
基于node.js之调试器详解
Aug 22 Javascript
基于vue的换肤功能的示例代码
Oct 10 Javascript
Vue2.0用户权限控制解决方案的示例
Feb 10 Javascript
详解Vue打包优化之code spliting
Apr 09 Javascript
Next.js项目实战踩坑指南(笔记)
Nov 29 Javascript
vue项目在线上服务器访问失败原因分析
Aug 14 Javascript
js属性对象的hasOwnProperty方法的使用
Feb 05 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反向代理类代码
2014/08/15 PHP
phpmyadmin中禁止外网使用的方法
2014/11/04 PHP
thinkphp3.2.2前后台公用类架构问题分析
2014/11/25 PHP
php从数据库查询结果生成树形列表的方法
2015/04/17 PHP
yii2超好用的日期组件和时间组件
2016/05/05 PHP
PHP数组的定义、初始化和数组元素的显示实现代码
2016/11/05 PHP
PHP获取文件扩展名的方法实例总结
2017/06/10 PHP
创建无限极分类树型结构的简单方法
2017/06/20 PHP
js自带函数备忘 数组
2006/12/29 Javascript
JavaScript call apply使用 JavaScript对象的方法绑定到DOM事件后this指向问题
2011/09/28 Javascript
jQuery代码优化 事件委托篇
2011/11/01 Javascript
Javascript判断对象是否相等实现代码
2013/03/18 Javascript
教你如何在 Javascript 文件里使用 .Net MVC Razor 语法
2014/07/23 Javascript
浅谈window.onbeforeunload() 事件调用ajax
2016/06/29 Javascript
零基础轻松学JavaScript闭包
2016/12/30 Javascript
基于JavaScript实现多级菜单效果
2017/07/25 Javascript
vue中导出Excel表格的实现代码
2018/10/18 Javascript
JS前端知识点 运算符优先级,URL编码与解码,String,Math,arguments操作整理总结
2019/06/27 Javascript
原生js实现3D轮播图
2020/03/21 Javascript
vue keep-alive 动态删除组件缓存的例子
2019/11/04 Javascript
小程序如何写动态标签的实现方法
2020/02/05 Javascript
如何在JavaScript中正确处理变量
2020/12/25 Javascript
Python 调用Java实例详解
2017/06/02 Python
python3.6.3转化为win-exe文件发布的方法
2018/10/31 Python
详解python selenium 爬取网易云音乐歌单名
2019/03/28 Python
keras获得某一层或者某层权重的输出实例
2020/01/24 Python
Python collections模块的使用方法
2020/10/09 Python
Joe Fresh官网:加拿大时尚品牌和零售连锁店
2016/11/30 全球购物
文明风采获奖感言
2014/02/18 职场文书
我的教育故事演讲稿
2014/05/04 职场文书
初中升旗仪式演讲稿
2014/05/08 职场文书
法人委托书的范本格式
2014/09/11 职场文书
2016年村党支部公开承诺书
2016/03/24 职场文书
HTML+JS实现在线朗读器
2022/02/15 Javascript
如何用六步教会你使用python爬虫爬取数据
2022/04/06 Python
VUE解决跨域问题Access to XMLHttpRequest at
2022/05/06 Vue.js