1、使用测试方法
- 在编程语言中,正则表达式用于匹配指定的字符串。 通过正则表达式创建匹配模式(规则)可以帮你完成指定匹配。有大小写区别。
let myString = "Hello, World!";
let myRegex = /Hello/;
let result = myRegex.test(myString); // 修改这一行
console.log(result) // true
- 正则表达式,查找多个字符
let petString = "James has a pet cat.";
let petRegex = /dog|cat|bird|fish/; // 修改这一行
let result = petRegex.test(petString);
console.log(result) // true
- i 忽略大小写
let petString = "James has a pet cat.";
let petRegex = /dog|cat|bird|fish/i; // 修改这一行
let result = petRegex.test(petString);
console.log(result) // true
2、提取匹配项.match()
注意, .match 语法是目前为止一直使用的 .test 方法中的“反向”:
let extractStr = "Extract the word 'coding' from this string.";
let codingRegex = /coding/; // 修改这一行
let result = extractStr.match(codingRegex); // 修改这一行
console.log(result)
// 0: "coding"
// groups: undefined
// index: 18
// input: "Extract the word 'coding' from this string."
// length: 1
// result[0] coding
3、全局搜索,不区分大小写
- i 不区分大小写
- g 多次搜寻或提取模式匹配,可以使用
g标志。
let twinkleStar = "Twinkle, twinkle, little star";
let starRegex = /Twinkle/gi; // 修改这一行
let result = twinkleStar.match(starRegex); // 修改这一行
console.log(result) // [ 'Twinkle', 'twinkle' ]
4、用通配符匹配任何内容
- 有时不(或不需要)知道匹配模式中的确切字符。 如果要精确匹配到完整的单词,那出现一个拼写错误就会匹配不到。 幸运的是,可以使用通配符
.来处理这种情况。
let humStr = "I'll hum a song";
let hugStr = "Bear hug";
let huRegex = /hu./;
huRegex.test(humStr); // true
huRegex.test(hugStr); // true
5、将单个字符与多种可能性匹配
- 可以使用字符集 (character classes)更灵活的匹配字符。 可以把字符集放在方括号(
[和])之间来定义一组需要匹配的字符串。
let bigStr = "big";
let bagStr = "bag";
let bugStr = "bug";
let bogStr = "bog";
let bgRegex = /b[aiu]g/;
bigStr.match(bgRegex); // ["big"]
bagStr.match(bgRegex); // ["bag"]
bugStr.match(bgRegex); // ["bug"]
bogStr.match(bgRegex); // null
6、在字符集中,可以使用连字符(-)来定义要匹配的字符范围。
- 可以匹配字母以及数字
let catStr = "cat";
let batStr = "bat";
let matStr = "mat";
let bgRegex = /[a-e]at/;
catStr.match(bgRegex); // ["cat"]
batStr.match(bgRegex); // ["bat"]
matStr.match(bgRegex); // null
7、字母数字一起使用
创建一个正则表达式,使其可以匹配 h 和 s 之间的一系列字母,以及 2 和 6 之间的一系列数字。 请记得在正则表达式中包含恰当的标志。
let quoteSample = "Blueberry 3.141592653s are delicious.";
let myRegex = /[h-s2-6]/gi; // 修改这一行
let result = quoteSample.match(myRegex); // 修改这一行
8、创建一个匹配所有非数字或元音字符的正则表达式。 请记得在正则表达式中包含恰当的标志。
let quoteSample = "3 blind mice.";
let myRegex = /[^aeiou^0-9]/gi;
let result = quoteSample.match(myRegex);
// 返回非元音字符,非数字
9、匹配出现一次或多次的字符
有时,需要匹配出现一次或者连续多次的的字符(或字符组)。 这意味着它至少出现一次,并且可能重复出现。
let difficultSpelling = "Mississippi";
let myRegex = /s+/g;
let result = difficultSpelling.match(myRegex);
console.log(result) // [ 'ss', 'ss' ]
10、匹配出现零次或多次的字符
let soccerWord = "gooooooooal!";
let gPhrase = "gut feeling";
let oPhrase = "over the moon";
let goRegex = /go*/;
soccerWord.match(goRegex); // ["goooooooo"]
gPhrase.match(goRegex); // ["g"]
oPhrase.match(goRegex); // null
11、用惰性匹配来查找字符
在正则表达式中,贪婪(greedy)匹配会匹配到符合正则表达式匹配模式的字符串的最长可能部分,并将其作为匹配项返回。 另一种方案称为懒惰(lazy)匹配,它会匹配到满足正则表达式的字符串的最小可能部分。
let text = "<h1>Winter is coming</h1>";
let myRegex = /<.*?>/; // 修改这一行
let result = text.match(myRegex);
console.log(result[0]) // <h1>