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 相关文章推荐
JavaScript Perfection kill 测试及答案
Mar 23 Javascript
jquery、js调用iframe父窗口与子窗口元素的方法整理
Jul 31 Javascript
jQuery实现渐变下拉菜单的简单方法
Mar 11 Javascript
JavaScript中字符串(string)转json的2种方法
Jun 25 Javascript
jQuery匹配文档链接并添加class的方法
Jun 26 Javascript
jquery实现select选择框内容左右移动代码分享
Nov 21 Javascript
jQuery DataTables插件自定义Ajax分页实例解析
Apr 28 Javascript
Bootstrap的fileinput插件实现多文件上传的方法
Sep 05 Javascript
JS实现的模仿QQ头像资料卡显示与隐藏效果
Apr 07 Javascript
js 数字、字符串、布尔值的转换方法(必看)
Apr 07 Javascript
gulp解决跨域的配置文件问题
Jun 08 Javascript
js实现盒子拖拽动画效果
Aug 09 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你的验证码安全码?
2007/01/02 PHP
解析php5配置使用pdo
2013/07/03 PHP
php实现购物车功能(上)
2020/07/23 PHP
详解php curl带有csrf-token验证模拟提交方法
2018/04/18 PHP
如何在Laravel之外使用illuminate组件详解
2020/09/20 PHP
用javascript实现兼容IE7的类库 IE7_0_9.zip提供下载
2007/08/08 Javascript
在表单提交前进行验证的几种方式整理
2013/07/31 Javascript
JavaScript 学习笔记之变量及其作用域
2015/01/14 Javascript
JavaScript实现判断图片是否加载完成的3种方法整理
2015/03/13 Javascript
必备的JS调试技巧汇总
2016/07/20 Javascript
Node.js 使用命令行工具检查更新
2017/06/08 Javascript
关于 angularJS的一些用法
2017/11/29 Javascript
基于$.ajax()方法从服务器获取json数据的几种方式总结
2018/01/31 Javascript
vue 组件中添加样式不生效的解决方法
2018/07/06 Javascript
Vue中的v-for循环key属性注意事项小结
2018/08/12 Javascript
vue-cli3 项目优化之通过 node 自动生成组件模板 generate View、Component
2019/04/30 Javascript
微信小程序分享小程序码的生成(带参数)以及参数的获取
2020/03/25 Javascript
解决vscode进行vue格式化,会自动补分号和双引号的问题
2020/10/26 Javascript
用Python的Django框架完成视频处理任务的教程
2015/04/02 Python
用于统计项目中代码总行数的Python脚本分享
2015/04/21 Python
Python的爬虫框架scrapy用21行代码写一个爬虫
2017/04/24 Python
基于Python中单例模式的几种实现方式及优化详解
2018/01/09 Python
numpy 计算两个数组重复程度的方法
2018/11/07 Python
详解Python学习之安装pandas
2019/04/16 Python
python numpy之np.random的随机数函数使用介绍
2019/10/06 Python
python链表类中获取元素实例方法
2021/02/23 Python
Under Armour安德玛德国官网:美国高端运动科技品牌
2019/03/09 全球购物
黄继光的英雄事迹材料
2014/02/13 职场文书
评析教师个人的自我评价
2014/02/19 职场文书
培训研修方案
2014/06/06 职场文书
2015年个人现实表现材料
2014/12/10 职场文书
工作迟到检讨书范文
2015/05/06 职场文书
2016党校培训心得体会
2016/01/07 职场文书
投资入股协议书
2016/03/22 职场文书
php 防护xss,PHP的防御XSS注入的终极解决方案
2021/04/01 PHP
OpenCV-Python实现轮廓拟合
2021/06/08 Python