day03~正则表达式

正则表达式

检测是否存在

.test() 方法

let testStr = "freeCodeCamp";
let testRegex = /Code/;
testRegex.test(testStr);

匹配时忽略大小写

实例:

/ignorecase/i
这个字符串可以匹配字符串 ignorecase、igNoreCase 和 IgnoreCase。

提取匹配项

使用 .match() 方法来提取找到的实际匹配项。

"Hello, World!".match(/Hello/);
let ourStr = "Regular expressions";
let ourRegex = /expressions/;
ourStr.match(ourRegex);

这里第一个 match 将返回 [“Hello”] 第二个将返回 [“expressions”]。

全局匹配

若要多次搜寻或提取模式匹配,可以使用 g 标志。

let repeatRegex = /Repeat/g;
testStr.match(repeatRegex);

这里 match 返回值 [“Repeat”, “Repeat”, “Repeat”]

注意:
在正则表达式上可以有多个标志,比如 /search/gi

用通配符匹配任何内容

有时不(或不需要)知道匹配模式中的确切字符。 如果要精确匹配到完整的单词,那出现一个拼写错误就会匹配不到。 幸运的是,可以使用通配符 . 来处理这种情况。

通配符 . 将匹配任何一个字符。 通配符也叫 dot 或 period。 可以像使用正则表达式中任何其他字符一样使用通配符。 例如,如果想匹配 hug、huh、hut 和 hum,可以使用正则表达式 /hu./ 匹配以上四个单词。

let humStr = "I'll hum a song";
let hugStr = "Bear hug";
let huRegex = /hu./;
huRegex.test(humStr);
huRegex.test(hugStr);

上面的 test 都会返回 true。

将单个字符与多种可能性匹配

可以把字符集放在方括号([ 和 ])之间来定义一组需要匹配的字符串。

例如,如果想要匹配 bag、big 和 bug,但是不想匹配 bog。 可以创建正则表达式 /b[aiu]g/ 来执行此操作。 [aiu] 是只匹配字符 a、i 或者 u 的字符集。(因比较简答,故不用代码演示。)

匹配字母表中的字母

在字符集中,可以使用连字符(-)来定义要匹配的字符范围。

例如,要匹配小写字母 a 到 e,你可以使用 [a-e]。

匹配单个未指定的字符

例如,/[^aeiou]/gi 匹配所有非元音字符。 注意,字符 .、!、[、@、/ 和空白字符等也会被匹配,该否定字符集仅排除元音字符。

匹配出现一次或多次的字符

例如,/a+/g 会在 abc 中匹配到一个匹配项,并且返回 [“a”]。 因为 + 的存在,它也会在 aabc 中匹配到一个匹配项,然后返回 [“aa”]。

如果它是检查字符串 abab,它将匹配到两个匹配项并且返回[“a”, “a”],因为a字符不连续,在它们之间有一个b字符。 最后,因为在字符串 bcd 中没有 a,因此找不到匹配项。

匹配出现零次或多次的字符

还有一个选项可以匹配出现零次或多次的字符。执行该操作的字符叫做星号,即*。

也可用在字符串的开头。

let soccerWord = "gooooooooal!";
let gPhrase = "gut feeling";
let oPhrase = "over the moon";
let goRegex = /go*/;
soccerWord.match(goRegex);
gPhrase.match(goRegex);
oPhrase.match(goRegex);

按顺序排列,三次 match 调用将返回值 [“goooooooo”],[“g”] 和 null。

匹配字符串的末尾

可以使用正则表达式的美元符号 $ 来搜寻字符串的结尾。

匹配除了字母和数字的所有符号

已经了解到可以使用缩写 \w 来匹配字母和数字 [A-Za-z0-9_]。 不过,有可能想要搜寻的匹配模式是非字母数字字符。

可以使用 \W 搜寻和 \w 相反的匹配模式。 注意,相反匹配模式使用大写字母。 此缩写与 [^A-Za-z0-9_] 是一样的。

匹配所有数字

查找数字字符的缩写是 \d,注意是小写的 d。 这等同于元字符 [0-9],它查找 0 到 9 之间任意数字的单个字符。

匹配所有非数字

查找非数字字符的缩写是 \D。 这等同于字符串 [^0-9],它查找不是 0 - 9 之间数字的单个字符。

你可能感兴趣的:(学习笔记,正则表达式)