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 相关文章推荐
HTML5附件拖拽上传drop & google.gears实现代码
Apr 28 Javascript
JsDom 编程小结
Aug 09 Javascript
js实现用户离开页面前提示是否离开此页面的方法(包括浏览器按钮事件)
Jul 18 Javascript
Javascript中arguments对象的详解与使用方法
Oct 04 Javascript
微信小程序购物商城系统开发系列-目录结构介绍
Nov 21 Javascript
Vue中使用vee-validate表单验证的方法
May 09 Javascript
JS解析后台返回的JSON格式数据实例
Aug 06 Javascript
vue中v-text / v-html使用实例代码详解
Apr 02 Javascript
Vue调用后端java接口的实例代码
Oct 28 Javascript
Vue 实现简易多行滚动"弹幕"效果
Jan 02 Javascript
VueX模块的具体使用(小白教程)
Jun 05 Javascript
基于 Vue 的 Electron 项目搭建过程图文详解
Jul 22 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
为了这两部电子管收音机,买了6套全新电子管和10粒刻度盘灯泡
2021/03/02 无线电
如何对PHP程序中的常见漏洞进行攻击(上)
2006/10/09 PHP
PHP中的array数组类型分析说明
2010/07/27 PHP
PHP设计模式 注册表模式(多个类的注册)
2012/02/05 PHP
php中使用session_set_save_handler()函数把session保存到MySQL数据库实例
2014/11/06 PHP
php设计模式之单例模式实例分析
2015/02/25 PHP
Laravel Eloquent分表方法并使用模型关联的实现
2019/11/25 PHP
理解Javascript_08_函数对象
2010/10/15 Javascript
密码框显示提示文字jquery示例
2013/08/29 Javascript
js实现class样式的修改、添加及删除的方法
2015/01/20 Javascript
jquery验证邮箱格式并显示提交按钮
2015/11/07 Javascript
jquery实现二级导航下拉菜单效果
2015/12/18 Javascript
jQuery+PHP实现微信转盘抽奖功能的方法
2016/05/25 Javascript
sencha ext js 6 快速入门(必看)
2016/06/01 Javascript
JS中input表单隐藏域及其使用方法
2017/02/13 Javascript
Javascript中字符串相关常用的使用方法总结
2017/03/13 Javascript
JavaScript运动框架 解决速度正负取整问题(一)
2017/05/17 Javascript
基于nodejs+express4.X实现文件下载的实例代码
2017/07/13 NodeJs
关于vue项目中搜索节流的实现代码
2019/09/17 Javascript
python中使用PIL制作并验证图片验证码
2018/03/15 Python
Python利用heapq实现一个优先级队列的方法
2019/02/03 Python
Python:type、object、class与内置类型实例
2019/12/25 Python
Python函数的返回值、匿名函数lambda、filter函数、map函数、reduce函数用法实例分析
2019/12/26 Python
pytorch点乘与叉乘示例讲解
2019/12/27 Python
tensorflow之获取tensor的shape作为max_pool的ksize实例
2020/01/04 Python
tensorflow使用CNN分析mnist手写体数字数据集
2020/06/17 Python
python线程池 ThreadPoolExecutor 的用法示例
2020/10/10 Python
Clarins娇韵诗美国官网:法国天然护肤品牌
2016/09/26 全球购物
《东方明珠》教学反思
2014/04/20 职场文书
《春雨》教学反思
2014/04/24 职场文书
关于奉献的演讲稿
2014/05/21 职场文书
党的群众路线教育实践活动个人对照检查材料范文
2014/09/25 职场文书
2015年度党员自我评价范文
2015/03/03 职场文书
2015年学生会主席工作总结
2015/04/21 职场文书
中学教师读书笔记
2015/07/01 职场文书
Nginx使用Lua模块实现WAF的原理解析
2021/09/04 Servers