javaScript 第五天 RegExp()方法与正则表达式

正则表达式的定义

JavaScript中的正则表达式用RegExp对象表示,可以用RegExp()构造函数来创建RegExp对象,但RegExp对象更多的是通过一种特殊的直接量语法来创建。正则表达式直接量定义为包含在一对斜杆(/)之间的字符。

var Pattern=/s$/;//匹配所有以字母's'结尾的字符串
//上行代码等价于
var pattern=new RegExp("s$");

正则表达式的模式规则是有一个字符序列组成的。包括所有字母和数组在内,大多数的字符都是按照直接量仅描述待匹配的字符的,除此之外,正则表达式中还有其他具有特殊语义的字符,这些字符并不按照字面含义进行匹配。

直接量字符

正则表达式中所有的字母和数字都是按照字面含义进行匹配的。JavaScript正则表达式语法也支持非字母的字符匹配,这些字符需要通过反斜杠()作为·前缀进行转义。
在这里插入图片描述

字符类

将直接量字符单独放进方括号内就组成了字符类。一个字符类可以匹配她所包含的任意字符。
在这里插入图片描述

重复

为了可以实现描述多个同种类字符,可以在正则模式之后跟随用以指定字符重复的标记。
在这里插入图片描述
上表列出的匹配重复字符是尽可能多地匹配,而且允许后续的正则表达式继续匹配。这称为贪婪匹配。为实现非贪婪匹配,只须在待匹配的字符后跟随一个问号即可(?):"??","+?","*?","{1,5}?}.

选择(|)、分组(())和引用(\n)

正则表达式的语法还包括指定选择项、子表达式分组和引用前一子表达式的特殊字符。
选择(|)
字符”|“用于分隔供选择的字符,选择项的尝试匹配次序是从左到右,直到发现了匹配项。(a|ab匹配字符串“ab"时,他只能匹配第一个字符)
分组(())
1.圆括号(())把单独的项组合合成子表达式。(/(ab|cd)+|ef/可以匹配字符串‘ef’,也可以匹配”ab"或“cd"的一次或多次重复)
2.圆括号(())在完整的模式中定义子模式。当一个正则表达式成功地和目标字符串相匹配时,可以从目标中抽出和圆括号中的子模式相匹配的部分。
3.圆括号(())允许在同一正则表达式的后部引用前面的子表达式。这是通过在字符"“后面加一位或多位数字实现的。这个数字指定了带圆括号的子表达式在正则表达式中的位置(参与计数左括号的位置)。
引用(\n)
对正则表达式中的一个子表达式的引用,并不是指对子表达式的引用,而是指与那个模式相匹配的文本引用。(/([” ‘])[^"’]*\1/匹配由双引号或单引号括起来的内容)
在这里插入图片描述

指定匹配位置

正则表达式中的多个元素才能匹配字符串中的一个字符,还有一些正则表达式的元素匹配的是字符之间的位置,而不是实际的字符。像这种不匹配某个可见的字符,它们指定匹配发生的合法位置。我们称这些元素为正则表达式的锚。
在这里插入图片描述

指定匹配位置

在这里插入图片描述

用于模式匹配的String()方法

String对象的四种用以执行正则表达式模式匹配和检索替换操作的方法。
1.search()
它的参数是一个正则表达式,返回第一个与之匹配的子串的起始位置,诺找不到返回-1.
该方法不支持全局检索,因为它忽略正则表达式参数中的修饰符g。
“JavaScript".search(/script/i/); //=>0
2.replace()
该方法用以执行检索和替换操作。第一个参数是一个正则表达式,第二个参数是要进行替换的字符串。
text.replace(/javascript/gi,“JavaScript”);//将text中所有的不区分大小写的"javascript"都替换成“JavaScript"
3.match()
该方法唯一的参数就是正则表达式(或者通过RegExp()构造函数将其转换为正则表达式),返回的是一个由匹配结果组成的数组。

4.split()
该方法用以将调用它的字符串拆分为一个子串组成的数组,使用的分隔是split()的参数,该参数也可以是一个正则表达式。

RegExp对象

正则表达式是通过RegExp对象来表示的。RegExp()构造函数带有两个参数,其中第二个参数是可选的,RegExp()用以创建新的RegExp对象。第一个参数包含正则表达式的主体部分,也就是正则表达式直接量中两条斜杠之间的文本,第二个参数是指定正则表达式的修饰符(修饰符i、g、m和它们的组合)。

RegExp的属性

在这里插入图片描述

RegExp的方法

ReExp对象定义了两个执行模式匹配的操作方法。
1.exec()方法与String方法match()方法类似,exec()方法对指定的字符串执行一个正则表达式,没有找到就返回null,找到匹配就将返回一个数组。这个数组的第一个元素包含的是与正则表达式相匹配的字符串,余下的元素是与圆括号内的子表达式相匹配的子串。
2.test(),它的参数是一个字符串,对该字符串进行检测,匹配正则表达式返回true,否则返回false。
当全局正则表达式调用这两个方法,会将正则表达式对象的lastIndex属性设置为紧挨着匹配字符串的字符位置,这会导致下一次对新字符串进行检测时,执行检索的位置可能就不是字符串的开始位置,而是一个随机位置(由上一次检测决定)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

扎克风暴

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值