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 相关文章推荐
xml分页+ajax请求数据源+dom取结果实例代码
Oct 31 Javascript
javascript 兼容所有浏览器的DOM扩展功能
Aug 01 Javascript
jQuery移动和复制dom节点实用DOM操作案例
Dec 17 Javascript
JavaScript数据结构和算法之图和图算法
Feb 11 Javascript
javascript常见数据验证插件大全
Aug 03 Javascript
javascript中对变量类型的判断方法
Aug 09 Javascript
javaScript如何跳出多重循环break、continue
Sep 01 Javascript
利用ES6语法重构React组件详解
Mar 02 Javascript
Vuejs实现带样式的单文件组件新方法
May 02 Javascript
浅谈对于react-thunk中间件的简单理解
May 01 Javascript
javascript实现的时间格式加8小时功能示例
Jun 13 Javascript
jquery实现的分页显示功能示例
Aug 23 jQuery
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的网址
2006/11/25 PHP
7个鲜为人知却非常实用的PHP函数
2015/07/01 PHP
谈谈你对Zend SAPIs(Zend SAPI Internals)的理解
2015/11/10 PHP
PHP7内核CGI与FastCGI详解
2019/04/14 PHP
Laravel中GraphQL接口请求频率实战记录
2020/09/01 PHP
jQuery学习笔记 操作jQuery对象 属性处理
2012/09/19 Javascript
JavaScript中的比较操作符>、=、
2014/12/31 Javascript
jQuery实现气球弹出框式的侧边导航菜单效果
2015/09/22 Javascript
Bootstrap每天必学之表格
2015/11/23 Javascript
微信小程序实现顶部普通选项卡效果(非swiper)
2020/06/19 Javascript
JS异步函数队列功能实例分析
2017/11/28 Javascript
解决vue同一slot在组件中渲染多次的问题
2018/09/06 Javascript
对angularJs中2种自定义服务的实例讲解
2018/09/30 Javascript
JS无限级导航菜单实现方法
2019/01/05 Javascript
小程序使用watch监听数据变化的方法详解
2019/09/20 Javascript
对vuex中getters计算过滤操作详解
2019/11/06 Javascript
Python 爬虫学习笔记之正则表达式
2016/09/21 Python
python递归删除指定目录及其所有内容的方法
2017/01/13 Python
python实现kMeans算法
2017/12/21 Python
通过Python模块filecmp 对文件比较的实现方法
2018/06/29 Python
python中将zip压缩包转为gz.tar的方法
2018/10/18 Python
python模块之subprocess模块级方法的使用
2019/03/26 Python
使用python判断jpeg图片的完整性实例
2019/06/10 Python
Python操作Excel工作簿的示例代码(\*.xlsx)
2020/03/23 Python
Python run()函数和start()函数的比较和差别介绍
2020/05/03 Python
H5 canvas中width、height和style的宽高区别详解
2018/11/02 HTML / CSS
Omio西班牙:全欧洲低价大巴、火车和航班搜索和比价
2017/02/11 全球购物
德国在线香料制造商:Gewürzland
2020/03/10 全球购物
自1926年以来就为冰岛保持温暖:66°North
2020/11/27 全球购物
司机的工作范围及职责
2013/11/13 职场文书
劳动模范事迹材料
2014/01/19 职场文书
就业协议书范本
2014/04/11 职场文书
学校政风行风评议工作总结
2014/10/21 职场文书
大学四年个人总结
2015/03/03 职场文书
2015年秋季小学开学典礼主持词
2015/07/16 职场文书
利用python Pandas实现批量拆分Excel与合并Excel
2021/05/23 Python