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 相关文章推荐
Highslide.js是一款基于js实现的网页中图片展示插件
Mar 30 Javascript
JavaScript在IE中“意外地调用了方法或属性访问”
Nov 19 Javascript
jQuery ui 1.7更新小结
Aug 15 Javascript
AlertBox 弹出层信息提示框效果实现步骤
Oct 11 Javascript
浅析jquery的js图表组件highcharts
Mar 06 Javascript
Vue.js一个文件对应一个组件实践
Oct 27 Javascript
JavaScript 计算笛卡尔积实例详解
Dec 02 Javascript
JS实现密码框的显示密码和隐藏密码功能示例
Dec 26 Javascript
vue学习笔记之vue1.0和vue2.0的区别介绍
May 17 Javascript
antd组件Upload实现自己上传的实现示例
Dec 18 Javascript
vue Element左侧无限级菜单实现
Jun 10 Javascript
Vue+Element UI 树形控件整合下拉功能菜单(tree + dropdown +input)
Aug 28 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的api数据接口书写实例(推荐)
2016/09/22 PHP
详解php几行代码实现CSV格式文件输出
2017/07/01 PHP
基于Jquery的仿照flash放大图片效果代码
2011/03/16 Javascript
页面回到顶部的三种实现(锚标记,js)
2012/10/01 Javascript
js图片处理示例代码
2014/05/12 Javascript
javascript常见用法总结
2014/05/22 Javascript
jqGrid 学习笔记整理——进阶篇(一 )
2016/04/17 Javascript
JavaScript通过HTML的class来获取HTML元素的方法总结
2016/05/24 Javascript
BootStrap Typeahead自动补全插件实例代码
2016/08/10 Javascript
JS全角与半角转化实例(分享)
2017/07/04 Javascript
本地搭建微信小程序服务器的实现方法
2017/10/27 Javascript
如何在vue中使用ts的示例代码
2018/02/28 Javascript
微信小程序图表插件wx-charts用法实例详解
2019/05/20 Javascript
百度小程序之间的页面通信过程详解
2019/07/18 Javascript
JS实现前端动态分页码代码实例
2020/06/02 Javascript
nodeJs项目在阿里云的简单部署
2020/11/27 NodeJs
[44:10]2018DOTA2亚洲邀请赛 4.5 淘汰赛 EG vs VP 第一场
2018/04/06 DOTA
python编程之requests在网络请求中添加cookies参数方法详解
2017/10/25 Python
解决Python requests库编码 socks5代理的问题
2018/05/07 Python
Python实现读写INI配置文件的方法示例
2018/06/09 Python
python生成以及打开json、csv和txt文件的实例
2018/11/16 Python
Python 中 function(#) (X)格式 和 (#)在Python3.*中的注意事项
2018/11/30 Python
python占位符输入方式实例
2019/05/27 Python
python验证码图片处理(二值化)
2019/11/01 Python
基于python cut和qcut的用法及区别详解
2019/11/22 Python
python 实现图片上传接口开发 并生成可以访问的图片url
2019/12/18 Python
利用 Python ElementTree 生成 xml的实例
2020/03/06 Python
css3实现一款模仿iphone样式的注册表单
2013/03/20 HTML / CSS
雅诗兰黛旗下专业男士保养领导品牌:Lab Series
2017/05/15 全球购物
Sneaker Studio罗马尼亚网站:购买运动鞋
2018/11/04 全球购物
会计自荐书
2013/12/02 职场文书
个人求职信范文分享
2014/01/06 职场文书
雏鹰争章活动总结
2014/05/09 职场文书
考研复习计划
2015/01/19 职场文书
医学会议开幕词
2016/03/03 职场文书
pytorch显存一直变大的解决方案
2021/04/08 Python