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 相关文章推荐
List the Stored Procedures in a SQL Server database
Jun 20 Javascript
Jquery动态更改一张位图的src与Attr的使用
Jul 31 Javascript
jquery右下角弹出提示框示例代码
Oct 08 Javascript
JS获取浏览器语言动态加载JS文件示例代码
Oct 31 Javascript
JavaScript实现当网页加载完成后执行指定函数的方法
Mar 21 Javascript
基于javascript实现根据身份证号码识别性别和年龄
Jan 22 Javascript
深入学习AngularJS中数据的双向绑定机制
Mar 04 Javascript
BootStrap的select2既可以查询又可以输入的实现代码
Feb 17 Javascript
jQuery插件echarts去掉垂直网格线用法示例
Mar 03 Javascript
JavaScript设计模式之调停者模式实例详解
Feb 03 Javascript
微信小程序通过保存图片分享到朋友圈功能
May 24 Javascript
基于ssm框架实现layui分页效果
Jul 27 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
UCenter Home二次开发指南
2009/05/28 PHP
php whois查询API制作方法
2011/06/23 PHP
php实现把url转换迅雷thunder资源下载地址的方法
2014/11/07 PHP
php模拟post提交数据的方法
2015/02/12 PHP
PHP curl使用实例
2015/07/02 PHP
ThinkPHP模板Volist标签嵌套循环输出多维数组的方法
2016/03/23 PHP
php htmlentities()函数的定义和用法
2016/05/13 PHP
对于Laravel 5.5核心架构的深入理解
2018/02/22 PHP
Thinkphp5框架中引入Markdown编辑器操作示例
2020/06/03 PHP
jquery tools之tabs 选项卡/页签
2009/07/25 Javascript
一个简单的JavaScript 日期计算算法
2009/09/11 Javascript
javascript判断两个IP地址是否在同一个网段的实现思路
2013/12/13 Javascript
AngularJS入门教程之服务(Service)
2016/07/27 Javascript
原生js实现jquery函数animate()动画效果的简单实例
2016/08/21 Javascript
BootStrap整体框架之基础布局组件
2016/12/15 Javascript
理解AngularJs篇:30分钟快速掌握AngularJs
2016/12/23 Javascript
JS全角与半角转化实例(分享)
2017/07/04 Javascript
vue cli 3.x 项目部署到 github pages的方法
2019/04/17 Javascript
vue实现Excel文件的上传与下载功能的两种方式
2019/06/28 Javascript
Vue proxyTable配置多个接口地址,解决跨域的问题
2020/09/11 Javascript
深入浅析Python中的迭代器
2019/06/04 Python
Python关于__name__属性的含义和作用详解
2020/02/19 Python
基于html5实现的图片墙效果
2014/10/16 HTML / CSS
Belvilla德国:在线预订度假屋
2018/04/10 全球购物
教育实习生的自我评价分享
2013/11/21 职场文书
大众服装店创业计划书范文
2014/01/01 职场文书
机关门卫制度
2014/02/01 职场文书
自荐信的基本格式
2014/02/22 职场文书
低碳环保演讲稿
2014/08/28 职场文书
钱学森观后感
2015/06/04 职场文书
《学会看病》教学反思
2016/02/17 职场文书
辞职信怎么写?
2019/05/21 职场文书
浏览器常用基本操作之python3+selenium4自动化测试(基础篇3)
2021/05/21 Python
SQL优化老出错,那是你没弄明白MySQL解释计划用法
2021/11/27 MySQL
vue实现列表拖拽排序的示例代码
2022/04/08 Vue.js
VUE解决跨域问题Access to XMLHttpRequest at
2022/05/06 Vue.js