JavaScript:正则表达式:基础语法,string的方法search、replace和正则的方法test和exec(exec重点进行信息筛选)

一、正则表达式基础语法(Regular Expression)

1、正则表达式的创建方式:对象new RegExp(“正则表达式”, “修饰符”) 或者 /正则表达式/修饰符

伪代码

var reg = new RegExp("正则表达式","igm")var reg = /正则表达式/igm;

2、分组()和分隔|

(1)| 用于分割可供选择的字符,要与 ( ) 搭配使用,存在优先匹配:从左到右(从繁到简)。注意与 [ ] 搭配,就是他本身 |,不代表分割。

如 [ab|cd],既可以匹配 ab 也可以匹配 cd。
选择项的尝试匹配次序是左——>右,因此,[a | ab]中当a匹配之后,就不匹配 ab 了,即使 ab 更优。所以书写顺序应该是从繁到简。

(2)() 分组,作用1:把一部分作为整体;作用2:定义子模式方便后面引用

作为整体,加上重复次数,如

/java(script)?/

可以匹配java和javascript
定义子模式,方便后面通过\加数字引用,例如

/["][a-z]["]/
/(["])[a-z]\1/

效果相同

3、\转译^$.*+?=|!/:{}()[] 、字符类、重复次数、位置锚点、修饰符

(1)特殊字符,^$.*+?=|!/:{}()[] 需要\转译

\o \t \n \v \f \r
^$.*+?=|!/:{}()[] 需要\转译

(2)字符类,[\w\W\s\S\d\D]

符号意义
[...]方括号内的任意字符
[^...]不在方括号内的任意字符
[a-b]字符范围。匹配包含的任一字符集
[^a-b]反向范围字符。匹配不在指定范围内的任何字符
.任意字符
\w任何ASCII字符组成的单词,等价于[a-zA-Z0-9]
\W任何不适ASCII字符组成的单词,等价于[^a-zA-Z0-9]
\s任何Unicode空白符
\S任何非Unicode空白符的字符,注意\w和\S不一样
\d任何ASCII数值,等价于[0-9]
\D任何ASCII数字之外的任何字符,等价于[^0-9]
[\b]退格直接量(特例)

(3)重复次数,?+*{n}{n,}{m,n}

符号意义
?0或1次
+1次或多次
*任意次
{n}n次
{n,}n次或n次以上
{m,n}最少m次,最多n次

正则是贪婪的,在全体满足匹配条件的情况下,尽可能贪婪。

(4)位置锚点,^$\b\B(?=p)(?!p)

符号意义
^匹配字符串的开头,在多行检测中,匹配一行的开头
$匹配字符串的结尾,在多行检测中,匹配一行的结尾
\b匹配一个单词边界的位置
\B匹配非单词边界的位置
(?=p)零宽正向先行断言(要求接下来的字符都与p匹配,但不能包含匹配p的那些字符)
(?!p)零宽负向先行断言(要求接下来的字符不与p匹配)

(5)修饰符,igm

符号意义
i执行不区分大小写的匹配
g执行一个全局匹配,简而言之,即找到所有的匹配,而不是在找到第一个之后就停止
m多行匹配模式

Attention(注意):
当修饰符是是全局 g 的时候,每次 exec() 和 test() 的时候,游标都会把当前位置的 lastIndex 设置为当前的设置,再次执行的时候就会从 lastIndex 的位置开始执行,因此最好每次执行的时候 lastIndex 设置为 0

二、reg.test()、reg.exec()、str.search()和str.replace()

(1)reg.test()

检测字符串中是否包含匹配的字符串,返回值:true/false
修饰符为"g"时,游标不会自动归零

<script>
	var str = "My name is Mike";
	var reg = /m/;
    var result = reg.test(str)
    console.log(result)
    // 显示:True
    var result = reg.test(str)
    console.log(result)
    // 显示:True
    var result = reg.test(str)
    console.log(result)
    // 显示:True
    var result = reg.test(str)
    console.log(result)
    // 显示:False
</script>

(2)reg.exec()

对string进行正则处理,并返回匹配的结果,array[0] 为原字符串,array[i] 为每个括号 ( ) 中匹配上的内容。

<script>
    var str = "My name is Mikeme";
    var reg = /(m)(e)/ig;
    var result = reg.exec(str)
    console.log(result)
    // 显示:["me", "m", "e", index: 5, input: "My name is Mikeme", groups: undefined]
    var result = reg.exec(str)
    console.log(result)
    // 显示:["me", "m", "e", index: 15, input: "My name is Mikeme", groups: undefined]
    var result = reg.exec(str)
    console.log(result)
    // 显示:null
    var result = reg.exec(str)
    console.log(result)
    // 显示:["me", "m", "e", index: 5, input: "My name is Mikeme", groups: undefined]
    console.log(result[0])
    // 显示:me
</script>

(3)str.search()

根据pattern进行正则匹配,如匹配到一个结果,则返回它的索引数,否则返回-1

<script>
	var str = "My name is Mike";
	var reg = /m/;
	var ret = str.search(reg);
	console.log(ret);
	// 显示:5
</script>

(4)str.replace()

根据pattern进行正则匹配,把匹配结果替换为replacement

<script>
	var str = "My name is Mike";
	var reg = /m/ig;
	var rep = str.replace(reg, "I")
	console.log(rep)
	// 显示:Iy naIe is Iike
</script>
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值