JavaScript正则表达式知识点整理

1  正则表达式

使用单个字符串来描述、匹配一系列符号某个句法规则的字符串,可以简单理解为按照某种规则去匹配符合条件的字符串。

Ps:https://regexper.com/  可帮助理解正则表达式,正则表达式工具

2  regexp对象

JavaScript通过内置对象RegExp支持正则表达式,有两种方法实例化RegExp对象:字面量、构造函数

3  预定义类

.         等价于 [^\r\n]          即除了回车符和换行符之外的所有字符

\d        等价于[0-9]            即数字字符

\D        等价于[^0-9]           即非数字字符

\s        等价于[\t\n\x0B\f\r]     即空白符

\S        等价于[^\t\n\x0B\f\r]    即非空白符

\w       等价于[A-Za-z_0-9]       即单词字符

\W       等价于[^a-Za-z_0-9]      即非单词字符

4  边界字符

^  即以xxx开始

$  即以xxx结束

\b 即单词边界

\B 即非单词边界

5  量词

?  即出现0次或1次,最多1次

+  即出现1次或多次,最少1次

*  即出现0次或多次,任意次

{n} 即出现n次

{n,m} 即出现n到m次

{n,}   即至少出现n次

6  贪婪模式

\d{3,6}   //尽可能多的匹配

7  非贪婪模式

让正则表达式尽可能少的匹配,即一旦匹配成功匹配不再继续尝试。在量词后面加上?即可。

‘123456789’.match(/\d{3,5}?/g)

8  分组

使用()可以达到分组的功能,使量词作用于分组

(Byron){3}

9  或

使用|可以达到或的效果

Byron|Casper          Byr(on|Ca)sper

10 反向引用

2015-12-25  =》 12/25/2015

‘2015-12-25’.replace(/(\d{4})-(\d{2})-(\d{2})/g,’$2$3$1’)

11  忽略分组

不希望捕获某些分组,只需要在分组内加上?:即可

(?:Byron).(ok)

12  前瞻

正则表达式从文本头部向尾部开始解析,文本尾部方向,称为“前”。前瞻就是在正则表达式匹配到规则的时候,向前检查是否符合断言。

符合和不符合特定断言称为肯定/正向匹配和否定/负向匹配。

正向前瞻:exp(?=asser)

负向前瞻:exp(!=asser)

console.log(‘a2*3‘.replace(/\w(?=\d)/g,‘x‘)); //x2*3
console.log(‘a2*34v8‘.replace(/\w(?=\d)/g,‘x‘));//x2*x4x8
console.log(‘a2*34vv‘.replace(/\w(?=\d)/g,‘x‘));//x2*x4vv
console.log(‘a2*34vv‘.replace(/\w(?!\d)/g,‘x‘));//ax*3xxx

13  对象属性

global:是否全局搜索,默认false;

ignore:是否大小写敏感,默认false;

multiline:多行搜索,默认值false;

lastIndex:是当前表达式匹配内容的最后一个字符的下一个位置

source:正则表达式的文本字符串;

14  正则对象方法

(1)     RegExp.prototype.exec(str):使用正则表达式对字符串执行搜索,并将更新全局RegExp对象的书写以匹配结果。如果没有匹配的文本则返回null,否则返回一个结果数组。Index声明匹配文本的第一个字符的位置;input存放检索的字符串string。

非全局调用:调用非全局的RegExp对象的exec()时,返回数组;第一个元素是与正则表达式相匹配的文本,第二个元素是与RegExpObject的第一个子表达式相匹配的文本(如果有的话),第三个元素是与RegExp对象的第二个子表达式相匹配的文本(如果有的话),以此类推。

var reg3=/\d(\w)\d/;
var reg4=/\d(\w)\d/g;
var ts=‘1a2b3c4d5e‘;
var ret=reg3.exec(ts);
console.log(reg3.lastIndex + ‘\t‘ + ret.index + ‘\t‘ + ret.toString());//0 0  1a2,a
console.log(reg3.lastIndex + ‘\t‘ + ret.index + ‘\t‘ + ret.toString());//0 0  1a2,a
while(ret = reg4.exec(ts)){
    console.log(reg4.lastIndex + ‘\t‘ + ret.index + ‘\t‘ + ret.toString());//3 0  1a2,a   //7    4  3c4,c
}

(2)RegExp.prototype.test(str):用于测试字符串参数中是否存在匹配正则表达式模式的字符串。如果存在则返回true,否则返回false。

14  string与正则相关方法

(1)String.prototype.search(reg):用于检索字符串中指定的子字符串,或检索与正则表达式相匹配的子字符串;方法返回第一个匹配结果index,查找不到返回-1;search()方法不执行全局匹配,它将忽略g标志,且总是从字符串的开始进行检索。

console.log("javascript".search(/script/i));//4

(2)String.prototype.match(reg):match()方法将检索字符串,以找到一个或多个与regexp匹配的文本;regexp是否具有标志g对结果影响很大。

如果regexp没有g标志,则match()方法就只能在字符串中执行一次匹配;如果没有找到任何匹配的文本,将返回null,否则返回一个数组,其中存放了与它找到的匹配文本有关的信息。返回数组的第一个元素存放的是匹配文本,而其余的元素存放的是与正则表达式的子表达式匹配的文本;除了常规的数组元素外,返回的数组还包括2个对象属性,index声明匹配文本的起始字符在字符串的位置,input声明对stringObject的引用。

如果regexp具有全局标志g,则match()方法将执行全局检索,找到字符串中的所有匹配子字符串;没有找到任何匹配的子串则返回null,如果找到了一个或多个匹配子串,则返回一个数组。数组元素中存放是字符串中所有的匹配子串,且没有index或input属性。

var reg3=/\d(\w)\d/;
var reg4=/\d(\w)\d/g;
var ts=‘$1a2b3c4d5e‘;
var ret=ts.match(reg3);
console.log(ret);//[ ‘1a2‘, ‘a‘, index: 1, input: ‘$1a2b3c4d5e‘ ]
console.log(ret.index + ‘\t‘ +reg3.lastIndex);//1  0 

ret = ts.match(reg4);
console.log(ret);//[ ‘1a2‘, ‘3c4‘ ]
console.log(ret.index + ‘\t‘ + reg4.lastIndex);//undefined 0

(3)String.prototype.split(reg):经常使用split()方法将字符串分割为字符数组,

console.log(‘a,b,c,d‘.split(‘,‘));  //[“a”,”b”,”c”,”d”]
console.log(‘a1b2c3d‘.split(/\d/)); //[“a”,”b”,”c”,”d”]

(4)String.prototype.replace():

String.prototype.replace(str,replaceStr);

String.prototype.replace(reg,replaceStr)

String.prototype.replace(reg,function)

其中,function参数含义,function会在每次匹配替换的时候调用,有四个参数:匹配字符串、正则表达式分组内容,没有分组则没有该参数、匹配项在字符串中的index、原字符串。

时间: 2024-10-21 07:49:59

JavaScript正则表达式知识点整理的相关文章

Javascript正则表达式知识整理

Javascript正则表达式知识整理 1.正则表达式思维导图 2.正则表达式常用示例 2.1 移除所有标签,只留下innerText var html = "<p><a href='http://www.baidu.com/'>Ruby Louvre</a>by <em>test</em></p>"; var text = html.replace(/<(?:.|\s)*?>/g, "&qu

JavaScript初学知识点整理

刚学了JavaScript,现在整理一下知识点. 一.JavaScript数据类型: 1.Undefined类型:当一个变量未初始化和无明确返回值时,该变量默认返回undefined. 2.Null类型:null类型表示空型,即该变量是存在的,只是不能找到他的值. 3.Boolean类型:布尔类型只有两个值,即true和false,当变量值为0时为false,否则为true. 4.Number类型:表示表示整数或浮点数. 5.String类型:表示字符型变量. 二.数据类型转换: (1)简单转换

javascript 完整知识点整理(基于w3school教程)

Copyright 2016 by 蔡舒啸 保持署名-非商业性使用-相同方式共享 Creative Commons BY-NC-ND 3.0 目录 5种基本类型 typeof 关键字 三种强制类型转换 日期 if语句for语句whiledo-whileswitch-case JavaScript 是脚本语言浏览器会在读取代码时逐行地执行脚本代码 javascript 内置字符串方法 正则表达式 比较运算符 逻辑运算符 JavaScript 错误 - ThrowTry 和 Catch throw

JavaScript入门知识点整理

一.准备工作:    1.为什么学习JavaScript        所有的主流浏览器都只是Javascript        大部分网页都使用Javascript        它可以让网页呈现各种动态效果        易学 2.如何插入JS        <script>标签要成对出现,并把JavaScript代码写在<script></script>之间. <script type="text/javascript">表示在&l

正则表达式知识点整理

定位符     \b 匹配单词的开始或结束   \B 匹配不是单词开头或结束的位置   ^ 匹配字符串的开始   $ 匹配字符串的结束   内容匹配     \w 匹配字母或数字或下划线或汉字   \W 匹配非字母或数字或下划线或汉字的字符   \d 匹配数字   \D 匹配非数字   \s 匹配任意的空白符   \S 匹配任何非空白字符   . 匹配除换行符以外的任意字符   \f 匹配一个换页符   \n 匹配一个换行符   \r 匹配一个回车符   \t 匹配一个制表符   \v 匹配一个

《javascript高级程序设计》第二、三章知识点整理

第二章知识点总结 1.<script>在html中的使用 主要功能:在页面中嵌入javascript代码或包含外部javascript文件. 常用属性: type:用于定义脚步代码的语言类型,默认为text/javascript. src:包含外部域的javascript文件. defer:表示脚本会在整个页面加载完毕之后运行,只对外部文件有效,最好只包含一个延迟脚本. async:脚本在不妨碍其他操作的情况下立即下载(不保证下载文件的顺序). 插入位置:在页面<body>标签页面

JS正则表达式大全(整理详细且实用)

JS正则表达式大全(整理详细且实用).需要的朋友可以过来参考下,希望对大家有所帮助!! 正则表达式中的特殊字符 字符 含意 \ 做为转意,即通常在"\"后面的字符不按原来意义解释,如/b/匹配字符"b",当b前面加了反斜杆后/\b/,转意为匹配一个单词的边界. -或- 对正则表达式功能字符的还原,如"*"匹配它前面元字符0次或多次,/a*/将匹配a,aa,aaa,加了"\"后,/a\*/将只匹配"a*".

asp.net mvc 3.0 知识点整理 ----- (2).Controller中几种Action返回类型对比

通过学习,我们可以发现,在Controller中提供了很多不同的Action返回类型.那么具体他们是有什么作用呢?它们的用法和区别是什么呢?通过资料书上的介绍和网上资料的查询,这里就来给大家列举和大致的概括下. (1). ActionResult(base):最基本的Action类型,返回其他类型都可以写ActionResult. (2). ContentResult:返回ContentResult用户定义的内容类型. public ActionResult Content() { return

JavaScript正则表达式实例汇总

本文会持续更新 ------------------------------------------------------------------------------------------------------------- 基本语法 关于语法部分就不啰嗦了,全世界都能找到相关知识 详细信息请参阅:W3school参考手册JavaScript RegExp 对象 当然,你也可以参考下面的博客园的他人博客,我就不重复造轮子了:js之正则表达式(上)      JS正则表达式大全(整理详细