正则表达式
检测是否存在 .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);
【学习笔记|day03~正则表达式】这里第一个 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 之间数字的单个字符。
推荐阅读
- 学习笔记|学习笔记之JavaScript——知识点(2)
- 学习笔记|使用 Detectron2 中的 Mask-RCNN model 并使用预训练好的模型 进行 inference 并提取建筑物轮廓
- Python|Python爬虫-获得某一链接下的所有超链接
- 学习笔记|如何使用PyCharm对函数进行测试
- 记录|Qt自定义控件-----仿B站标签创建框
- 学习笔记|CSS Sprites(CSS图片精灵、雪碧图)看这里就够了
- 学习笔记|考研数学笔记(曲率数学公式推导)
- java|使用Spring连接mysql数据库
- 学习笔记|小波变换(DWT),短时傅里叶分析(STFT),与快速傅里叶(FFT)之间的关系