Js-w3school(2020

/abc(d)/.exec(‘abcd’) // [“abcd”, “d”, index: 0, input: “abcd”]

此数组还有另外两个参数,input是输入的字符串,index表示匹配成功的序列在输入字符串中的索引位置

如果有全局参数(g),第二次匹配时将从上次匹配结束时继续

var r1 = /ab/

r1.exec(‘ababab’) // [‘ab’, index: 0]

r1.exec(‘ababab’) // [‘ab’, index: 0]

var r2 = /ab/g

r2.exec(‘ababab’) // [‘ab’, index: 0]

r2.exec(‘ababab’) // [‘ab’, index: 2]

r2.exec(‘ababab’) // [‘ab’, index: 4]

这一特性可以被用于循环匹配,比如统计字符串中abc的次数

var reg = /abc/g

var str = ‘abcabcabcabcabc’

var num = 0;

var match = null;

while((match = reg.exec(str)) !== null) {

num++

}

console.log(num) // 5

search() 方法使用表达式来搜索匹配,然后返回匹配的位置。

var str = “Visit W3School”;

var n = str.search(/w3school/i); //6

replace() 方法返回模式被替换处修改后的字符串。

replace([RegExp|String],[String|Function])

var str = “Visit Microsoft!”;

var res = str.replace(/microsoft/i, “W3School”); //Visit W3School!

其第一个参数可以是正则表达式,如果想全局替换需添加全局参数

‘abc’.replace(/[abc]/, ‘y’) // ybc

‘abc’.replace(/[abc]/g, ‘y’) // yyy 全局替换

在第二个参数中,也可以引用前面匹配的结果

‘abc’.replace(/a/, ‘$&b’) // abbc KaTeX parse error: Expected 'EOF', got '&' at position 1: &̲ 引用前面的匹配字符 ,'&b’-‘ab’

‘abc’.replace(/(a)b/, ‘$1a’) // aac &n 引用前面匹配字符的分组,‘$1a’-‘aa’

‘abc’.replace(/b/, ‘$’‘) // aac ‘ 引用匹配字符前面的字符 , ′ ` 引用匹配字符前面的字符, ' 引用匹配字符前面的字符,`’-‘a’

‘abc’.replace(/b/, “$'”) // acc ′ 引用匹配字符后面的字符 , " ' 引用匹配字符后面的字符," 引用匹配字符后面的字符,"’ "-“c”

如果第2个参数是回调函数,每匹配到一个结果就回调一次,每次回调都会传递以下参数

result: 本次匹配到的结果

$1,…$9: 正则表达式中有几个(),就会传递几个参数,$1~$9分别代表本次匹配中每个()提取的结果,最多9个

offset:记录本次匹配的开始位置

source:接受匹配的原始字符串

‘abc’.replace(/\w/g, function (match, $1, $2) {

return match + ‘-’

})

// a-b-c-

match()方法也会返回匹配的结果,匹配结果和exec类似

‘abc’.match(/abc/) // [‘abc’, index: 0, input: abc]

‘abc’.match(/abd/) // null

如果有全局参数(g),match会返回所有的结果,并且没有index和input属性

‘abcabcabc’.match(/abc/g) // [‘abc’, ‘abc’, ‘abc’]

split()方法使用正则,可以用指定符号分隔字符串,并返回数据

‘a,b.c’.split(/,|./) // [a, b, c]

3.修饰符:像 /microsoft/i,斜杠外面的i

在这里插入图片描述

g正则遇到第一个匹配的字符就会结束,加上全局修复符,可以让其匹配到结束

i正则默认是区分大小写的,i可以忽略大小写

m正则默认情况下,^和匹配行首和行尾,不理解就看例子

/jing$/ // 能够匹配 'yanhaijing,不能匹配 ‘yanhaijing\n’

/jing$/m // 能够匹配 'yanhaijing, 能够匹配 ‘yanhaijing\n’

/^jing/ // 能够匹配 ‘jing’,不能匹配 ‘\njing’

/^jing/m // 能够匹配 ‘jing’,能够匹配 ‘\njing’

4.括号表达式

在这里插入图片描述

()、[]、{} 的区别

() 的作用是提取匹配的字符串。表达式中有几个()就会得到几个相应的匹配字符串。比如 (\s+) 表示连续空格的字符串。

[]是定义匹配的字符范围。比如 [a-zA-Z0-9] 表示字符文本要匹配英文字符和数字。

{}一般用来表示匹配的长度,比如 \s{3} 表示匹配三个空格,\s[1,3]表示匹配1~3个空格。

5.元字符(Metacharacter)是拥有特殊含义的字符

在这里插入图片描述

在这里插入图片描述

. 匹配除了换行符(\n)以外的任意一个字符 = [^\n]

\w = [0-9a-zA-Z_]

\W = [^0-9a-zA-Z_]

\s = [ \t\n\v]

\S = [^ \t\n\v]

\d = [0-9]

\D = [^0-9]

^在[]外表示匹配开头的意思

^abc // 可以匹配abc,但是不能匹配aabc

$表示匹配结尾的意思

abc$ // 可以匹配abc,但是不能匹配abcc

上面提到的\b表示单词的边界

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值