• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >正则表达式 > 超全的js正则表达式整理笔记

超全的js正则表达式整理笔记

作者:zzq58157383 字体:[增加 减小] 来源:互联网 时间:2017-05-11

zzq58157383通过本文主要向大家介绍了js正则表达式,js正则表达式验证,js正则表达式语法,js正则表达式大全,js手机号码正则表达式等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

var reCat = new RegExp("cat", "gi"); //RegExp构造函数可以带一个或两个参数,第一个参数描述需要进行匹配的模式字符串,第二个参数指定了额外的处理命令 
var reCat = /cat/gi; //使用Perl风格的语法 
 
 i:执行对大小写不敏感的匹配 
 g:执行全局匹配(查找所有匹配而非在找到第一个匹配后停止) 
 m:执行多行匹配 


</div>

元字符 

元字符是表达式语法的一部分,在正则表达式中用到的所有元字符有:{ [ ( \ ^ $ | ) ] } ? * + - 
如匹配一个问号:var reQMark = /\?/; 或 var reQMark = new RegExp("\\?"); //注意这里是两个反斜杠,双重转义  

\xxx 查找以八进制数 xxx 规定的字符,如:/\142/为字符b 
\xdd 查找以十六进制数 dd 规定的字符,如:/\x62/为字符b 
\uxxxx 查找以十六进制数 xxxx 规定的 Unicode 字符,如:/\u0062/为字符b 
\r 查找回车符 
\n 查找换行符 
\f 查找换页符 
\t 查找制表符 
\v 查找垂直制表符 
\a 查找alert字符 
\e 查找escape字符 
\cX 查找与X相对应的控制字符 
\0 查找 NULL 字符 
 
. 查找单个字符,除了换行和行结束符,等同于[^\n\r] 
\w 查找单词字符,等同于[a-zA-Z_0-9] 
\W 查找非单词字符,等同于[^a-zA-Z_0-9] 
\d 查找数字,等同于[0-9] 
\D 查找非数字字符,等同于[^0-9] 
\s 查找空白字符,等同于[ \t\n\x0B\f\r],\x0B为垂直tab和\t一样 
\S 查找非空白字符,等同于[^ \t\n\x0B\f\r] 
</div>

方括号 

[abc] 查找方括号之间的任何字符 
[^abc] 查找任何不在方括号之间的字符 
[0-9] 查找任何从 0 至 9 的数字 
[a-z] 查找任何从小写 a 到小写 z 的字符 
[A-Z] 查找任何从大写 A 到大写 Z 的字符 
[A-z] 查找任何从大写 A 到小写 z 的字符 
[adgk] 查找给定集合内的任何字符 
[^adgk] 查找给定集合外的任何字符 
</div>

量词 
? 匹配任何包含零个或一个的字符串,如:ba?d匹配bd、bad 
+ 匹配任何包含至少一个的字符串,如:ba+d匹配bad、baad 
* 匹配任何包含零个或多个的字符串,如:ba*d匹配bd、bad、baad 
{n} 匹配包含恰好出现n次的序列的字符串,如:ba{1}d匹配bad 
{n,m} 匹配包含至少n次但不超过m次 的序列的字符串,如:ba{0,1}d匹配bd、bad 
{n,} 匹配包含至少出现n次的序列的字符串,如:ba{0,}匹配bd、bad、baad、baaad   
贪婪量词:先看整个的字符串是否匹配,如果发现没有匹配,去年该字符串中的最后一个字符并再次尝试,如:?、+、*、{n}、{n, m}、{n, },默认就为贪婪量词 
惰性量词:先看字符串中的第一个字母是否匹配,如果单独这一个字符还不够,就读入下一个字符,组成两个字符的字符串,与贪婪量词的工作方式恰好相反,如:??、+?、*?、{n}?、{n, m}?、{n, }? 
支配量词:只尝试匹配整个字符串,如果整个字符串不能产生匹配,不做进一步尝试,如:?+、++、*+、{n}+、{n, m}+、{n, }+  

var sToMatch = "abbbaabbbaaabbb1234"; 
var re1 = /.*bbb/g; //匹配结果为"abbbaabbbaaabbb" 
var re2 = /.*?bbb/g; //只有惰性量词才能匹配成功,匹配结果为"abbb","aabbb","aaabbb" 
var re3 = /.*+bbb/g; //匹配不了,直接报错 
</div>

复杂模式之分组:通过一系列括号包围一系列字符、字符类以及量词来使用的 
/(dog){2}/  匹配"dogdog" 
/([bd]ad?)*/  匹配空, "ba", "da", "bad", "dad" 
/(mom( and dad)?)/  匹配"mom", "mom and dad" 
/^\s*(.*?)\s+$/  匹配首尾的空白字符,也可以用/^\s+|\s+$/g 
复杂模式之反向引用:也叫捕获性分组,按照从左到右遇到的左括号字符的顺序进行创建和编号的,例如表达式(A?(B?(C?)))将产生编号从1-3的三个反向引用:(A?(B?(C?)))、(B?(C?))、(C?) 
反向引用有几种不同的使用方法: 
首先,使用正则表达式对象的test()、match()或search()方法后,反向引用的值可以从RegExp构造函数中获得,如: 

var sToMatch = "#123456789"; 
var reNumbers = /#(\d+)/; 
reNumbers.test(sToMatch); 
alert(RegExp.$1); //"123456789",$1保存了第一个反向引用,依次可以用$2,$3... 
</div>

然后,可以直接在定义分组的表达式中包含反向引用,通过使用特殊转义序列如\1、\2等实现 

var sToMatch = "dogdog"; 
var reDogdog = /(dog)\1/; //等同于/dogdog/ 
alert(reDogdog.test(sToMatch)); //true 
</div>

第三,反向引用可以用在String对象的replace()方法中,通过使用特殊字符序列如$1、$2等实现 

var sToChange = "1234 5678"; 
var reMatch = /(\d{4}) (\d{4})/; 
alert(sToChange.replace(reMatch, "$2 $1")); //"5678 1234" 
</div>

复杂模式之候选:使用管道符(|)放在两个单独的模式之间 

var reBadWords = /badword | anotherbadword/gi; 
var sUserInput = "This is a String using badword1 and badword2."; 
var sFinalText = sUserInput.replace(reBadWords, function(sMatch){ 
 return sMatch.replace(/./g, "*"); //用星号替换敏感词中的每一个字母 
}); 
</div>

复杂模式之非捕获性分组:相比捕获性分组,不会创建反向引用,在较长的正则表达式中,存储反向引用会降低匹配速度,通过使用非捕获性分组,仍然可以拥有与匹配字符串序列同样的能力,而无需存储结果的开销 

var sToMatch = "#123456789"; 
var reNumbers = /#(?:\d+)/; //只需要在左括号的后面加上一个问号和一个紧跟的冒号就可创建一个非捕获性分组 
reNumbers.test(sToMatch); 
alert(RegExp.$1); //"",输出空字符串是因为该分组是非捕获性的 
alert(sToMatch.replace(reNumbers, "abcd$1")); //输出结果是"abcd$1"而不是"abcd123456789",不能使用任何反向引用 
</div>

又如: 

String.prototype.stripHTML = function(){ 
 var reTag = /<(?:.|\s)*?>/g; //匹配所有的HTML标签,防止插入恶意HTML代码 
 return this.replace(reTag, ""); 
} 
</div>

复杂模式之前瞻:告诉正则表达式运算器向前看一些字符而不移动其位置,存在正向前瞻(检查接下来出现的是不是某个特定字符集)和负向前瞻(检查接下来的不应该出现的特定字符集) 
正向前瞻(?=n) 匹配任何其后紧接指定字符串 n 的但不包括 n的字符串,注意这里的括号不是分组 
负向前瞻(?!n) 匹配任何其后没有紧接指定字符串 n 的字符串,如:  

var sToMatch1 = "bedroom"; 
var sToMatch2 = "bedding"; 
var reBed1 = /(bed(?=room))/; 
var reBed2 = /(bed(?!room))/; 
alert(reBed1.test(sToMatch1)); //true 
alert(RegExt.$1); //输出"bed"而不是"bedroom" 
alert(reBed1.test(sToMatch2)); //false 
alert(reBed2.test(sToMatch1)); //false 
alert(reBed2.test(sToMatch2)); //true 
alert(RegExt.$1); //输出的也是"bed" 
</div>

复杂模式之边界:用于正则表达式中表示模式的位置 
n$ 匹配任何结尾为 n 的字符串,如:/(\w+)\.$/匹配行尾单词"one.","two."等 
^n 匹配任何开头为 n 的字符串,如:/^(.+?)\b/匹配起始位置后的一个或多个单词字符 
\b 查找位于单词的开头或结尾的匹配,如:/\b(\S+?)\b/g 或 /(\w+)/g匹配从字符串中抽取单词 
\B 查找不处在单词的开头或结尾的匹配 
复杂模式之多行模式: 

var sToMatch = "First second\nthird fourth\nfifth sixth"; 
var reLastWordOnLine = /(\w+)$/gm; 
alert



 
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 最全正则表达式总结:验证QQ号、手机号、Email、中文、邮编、身份证、IP地址等
  • JS正则表达式一条龙讲解(从原理和语法到JS正则)
  • 浅析正则表达式中的lastIndex以及预查
  • 比较常用的几个正则表达式匹配数字(收藏)
  • 一个容易犯错的js手机号码验证正则表达式(推荐)
  • js中使用正则表达式查找字母和数字的方法
  • 利用正则表达式提取固定字符之间的字符串
  • 正则表达式实现最小匹配功能的方法
  • iOS 正则表达式判断纯数字及匹配11位手机号码的方法
  • 正则表达式教程之前后查找lookaround详解

相关文章

  • 2017-05-11js匹配网址url的正则表达式集合
  • 2017-05-11用正则按最后一个"_"分割"字符
  • 2017-05-11PHP 正则表达式特殊字符 [:alnum:] [:alpha:] 等
  • 2017-05-11RegExp 随笔 JavaScript RegExp 对象
  • 2017-05-11临时记录:一个正则
  • 2017-05-11常用正则表达式匹配代码介绍
  • 2017-05-11最新版网址替换正则表达式
  • 2017-05-11JavaScript 正则表达式 验证整数、小数、实数、有效位小数最简单
  • 2017-05-11正则表达式教程之前后查找lookaround详解
  • 2017-05-11常用正则表达式 比较实用

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • javascript RegExp multiline多行匹配影响的^$
    • PHP 正则表达式验证中文的问题
    • 正则表达式——匹配规则介绍
    • JS 正则表达式用法介绍
    • C# 正则表达式经典分类整理集合手册第1/3页
    • 数据库中使用正则表达式小结
    • js正则表达式讲解之index属性(RegExp对象)
    • 用于过滤空白字符的几种常见的js正则表达式pattern
    • ASP 正则函数替换分页后的参数
    • JS:正则将首字单词转成大写

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有