正则表达式
(regular expression/regex)
- 概念
用于匹配(match)、查找(search)字符串
随着深入学习,你将会理解什么叫
”应避免使用正则表达式解析 HTML,但使用正则表达式匹配 HTML 字符串的模式完全没问题“
- 用法
例如
let testStr = "freeCodeCamp";
let testRegex = /Code/;
testRegex.test(testStr);
其中 .test 函数用于测试是否匹配成功。
值得注意的是,该表达只能匹配完全一样的字符,无法识别大小写不同等等的情况。
.test()只能用于检查是否匹配;而.match()可用于输出匹配的结果
一些很好用的关键字
关于匹配
匹配多个字符
/ /中用 | 隔开
即匹配号后面加个 i,大小写都会被允许匹配
注:如果想要同时使用,格式如下:
``/apple/ig`
-
不完全匹配: 在匹配关键词中用 . 代替,因为 . 可匹配任何字符 如:/ .un/ ,可匹配出文中诸如run fun 等等词 -
仅需要特定值的不完全匹配 如:想要 big,bag,不想要 bug /b[ia]g/ -
匹配一定范围内的字符: 如:想要bag,bbg,bcg…直到bzg /b[a-z]g/ 注:包括但不限于字母表,如也可以是数字的范围等等 -
匹配字母表中的所有选项,有一个更方便的表达: /\w/ , 其效果与/[a-zA-Z0-9]/ 一致,也同样会将下划线匹配进去
关于匹配的其他补充:特殊符号用法
-
+(一次或多次) 举个例子:/a+/ig 匹配“abc”时回返回"a";“aabc"时返回"aa”,“abab"时返回"a” “a” -
*(0次或多次) 举个例子: let soccerWord = "gooooooooal!";
let gPhrase = "gut feeling";
let oPhrase = "over the moon";
let goRegex = /go*/;
soccerWord.match(goRegex);
gPhrase.match(goRegex);
oPhrase.match(goRegex);
“In order, the three match calls would return the values ["goooooooo"] , ["g"] , and null .” 个人对这个解释的理解(这只是初学的想法,很有可能是谬误哈,大家不要轻信,有错误也欢迎批评指正): 多个:如果检索时*前的字符都出现了且至少有一个连续出现,那么那一长串字符都会被返回;如果出现了第n个字符,从第n+1个字符开始就不匹配了,那么返回前n个字符; 0个:如果前n个都没有,从第n+1个开始才对应,则也是返回null -
关于lazy matching: 之前默认的匹配是“越长越好”,尽可能把匹配的结果全部返回;但是只要在//中加上一个“?",就会得到一种很简略的返回结果。 应用:在使用正则表达式匹配html的字符串时,如"<h1>Winter is coming</h1>" 一句,我们往往只需要一个<h1> 的结果,而不需要标题的具体内容。 -
关于匹配次数: 如:/\a{5,8}/ 表示需要匹配a字符3到5次即可
-
关于不匹配
? - /[^xxx]/ 表示匹配除xxx以外的字符
? - /\w/ 的不匹配等效于/\W/
以此类推,这些广义替换字符的大写等效于它的不匹配,再如/\D/ 为不匹配数字
|