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 相关文章推荐
一页面多XMLHttpRequest对象
Jan 22 Javascript
ECMAScript 5严格模式(Strict Mode)介绍
Mar 02 Javascript
轻量级网页遮罩层jQuery插件用法实例
Jul 31 Javascript
JavaScript中0和""比较引发的问题
May 26 Javascript
js模仿微信朋友圈计算时间显示几天/几小时/几分钟/几秒之前
Apr 27 Javascript
微信小程序 wx.request方法的异步封装实例详解
May 18 Javascript
js截取字符串功能的实现方法
Sep 27 Javascript
11行JS代码制作二维码生成功能
Mar 09 Javascript
Vue 实现双向绑定的四种方法
Mar 16 Javascript
详解Vue项目编译后部署在非网站根目录的解决方案
Apr 26 Javascript
JS中数组与对象的遍历方法实例小结
Aug 14 Javascript
React实现阿里云OSS上传文件的示例
Aug 10 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
Bootstrap+PHP实现多图上传功能实例详解
2018/04/08 PHP
PHP实现微信申请退款功能
2018/10/01 PHP
JS 有趣的eval优化输入验证实例代码
2013/09/22 Javascript
JS图像无缝滚动脚本非常好用
2014/02/10 Javascript
js QQ客服悬浮效果实现代码
2014/12/12 Javascript
浅析js中substring和substr的方法
2015/11/09 Javascript
原生JavaScript实现异步多文件上传
2015/12/02 Javascript
简单实现的JQuery文本框水印插件
2016/06/14 Javascript
JS jQuery使用正则表达式去空字符的简单实现代码
2017/05/20 jQuery
Ionic2开发环境搭建教程
2020/08/20 Javascript
axios进阶实践之利用最优雅的方式写ajax请求
2017/12/20 Javascript
JSON字符串操作移除空串更改key/value的介绍
2019/01/05 Javascript
Vue源码探究之虚拟节点的实现
2019/04/17 Javascript
微信小程序通过js实现瀑布流布局详解
2019/08/28 Javascript
Vue组件模板及组件互相引用代码实例
2020/03/11 Javascript
vue-cli单页面预渲染seo-prerender-spa-plugin操作
2020/08/10 Javascript
JQuery Ajax如何实现注册检测用户名
2020/09/25 jQuery
[01:04:49]KG vs LGD 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
Python 中urls.py:URL dispatcher(路由配置文件)详解
2017/03/24 Python
修复 Django migration 时遇到的问题解决
2018/06/14 Python
python三引号输出方法
2019/02/27 Python
Python代码太长换行的实现
2019/07/05 Python
用python实现英文字母和相应序数转换的方法
2019/09/18 Python
关于sys.stdout和print的区别详解
2019/12/05 Python
详解使用canvas保存网页为pdf文件支持跨域
2018/11/23 HTML / CSS
HTML5 input新增type属性color颜色拾取器的实例代码
2018/08/27 HTML / CSS
HTML5调用手机发短信和打电话功能
2020/04/29 HTML / CSS
泰国的头号网上婴儿用品店:Motherhood.co.th
2019/04/09 全球购物
Java面试题:请问一下代码输出是什么
2015/05/27 面试题
TCP/IP的分层模型
2013/10/27 面试题
行政管理专业推荐信
2013/11/02 职场文书
生产车间主管岗位职责
2013/12/28 职场文书
护理工作感言
2014/01/16 职场文书
八年级作文之感恩
2019/11/22 职场文书
如何用 Python 子进程关闭 Excel 自动化中的弹窗
2021/05/07 Python
postgresql如何找到表中重复数据的行并删除
2023/05/08 MySQL