目录
匹配字符串的末尾 $ let lastRegex = /caboose$/
匹配多个字符串 |
let petString = "James has a pet cat.";
let petRegex = /dog|cat|bird/; // 修改这一行
let result = petRegex.test(petString);
匹配时忽略大小写 i
let myString = "freeCodeCamp";
let fccRegex = /freeCodeCamp/i; // 修改这一行
let result = fccRegex.test(myString);
.match
语法、.test语法区分
'string'.match(/regex/);
/regex/.test('string');
全局匹配 g
let twinkleStar = "Twinkle, twinkle, little star";
let starRegex = /Twinkle/ig; // 修改这一行
let result = twinkleStar.match(starRegex); // 修改这一行
字符集 [ ]
可以使用字符集 (character classes)更灵活的匹配字符。 可以把字符集放在方括号([
和 ]
)之间来定义一组需要匹配的字符串。
let bugStr = "bug";
let bogStr = "bog";
let bgRegex = /b[aiu]g/;
bigStr.match(bgRegex);
匹配大量字符 -
有时需要匹配大量字符(例如,字母表中的每个字母)。 有一种写法可以让实现这个功能变得简短。在字符集中,可以使用连字符(-
)来定义要匹配的字符范围。
匹配出现一次或多次的字符 /s+/g
匹配出现零次或多次的字符 /Aa*/g
论惰性匹配和贪婪匹配
匹配字符串的开头 ^
let rickyAndCal = "Cal and Ricky both like racing.";
let calRegex = /^Cal/;
let result = calRegex.test(rickyAndCal); //true
匹配字符串的末尾 $ let lastRegex = /caboose$/
匹配所有的字母和数字 \w
使用元字符,可以使用 [a-z]
搜寻字母表中的所有字母。 这种元字符是很常见的,它有一个缩写,但这个缩写也包含额外的字符下划线。元字符\w
等同于[A-Za-z0-9_]。
let quoteSample = "The five boxing wizards jump quickly.";
let alphabetRegexV2 = /\w/g;
let result = quoteSample.match(alphabetRegexV2).length;
匹配除了字母和数字的所有符号 \W
元字符\W
等同于[^A-Za-z0-9_]
。
匹配所有数字 \d
等同于元字符 [0-9]
,它查找 0 到 9 之间任意数字的单个字符。
匹配非数字字符 \D
查找非数字字符的缩写是 \D
。 这等同于字符串 [^0-9]
,它查找不是 0 - 9 之间数字的单个字符。
限制用户名
需要检索数据库中的所有用户名。 以下是用户在创建用户名时必须遵守的一些简单规则。
-
用户名只能是数字字母字符。
-
用户名中的数字必须在最后。 数字可以有零个或多个。 用户名不能以数字开头。
-
用户名字母可以是小写字母和大写字母。
-
用户名长度必须至少为两个字符。 两位用户名只能使用字母。
let username = "JackOfAllTrades";
let userCheck = /^[a-z]([0-9][0-9]+|[a-z]+\d*)$/i;// 修改这一行
let result = userCheck.test(username);
匹配空白字符 \s
可以使用 \s
搜寻空格,其中 s
是小写。 此匹配模式将匹配空格、回车符、制表符、换页符和换行符。 可以认为这类似于元字符 [\r\t\f\n\v]
。
匹配非空白字符 \S
类似于元字符 [^\r\t\f\n\v]。
检查全部或无
可以使用问号 ?
指定可能存在的元素。 这将检查前面的零个或一个元素。 可以将此符号视为前面的元素是可选的。场景:美英单词拼写可能会有所不同。
let favWord = "favorite";
let favRegex = /favou?rite/; // 修改这一行
let result = favRegex.test(favWord);
正向先行断言
正向先行断言会查看并确保搜索匹配模式中的元素存在,但实际上并不匹配。 正向先行断言的用法是 (?=...)
,其中 ...
就是需要存在但不会被匹配的部分。
let sampleWord = "12345";
let pwRegex = /(?=[a-z])(?=\D*\d{2,})/i; // 修改这一行
let result = pwRegex.test(sampleWord);
console.log(result);
使用捕获组搜索和替换
可以在字符串上使用 .replace()
方法来搜索并替换字符串中的文本。 .replace()
的输入首先是想要搜索的正则表达式匹配模式。 第二个参数是用于替换匹配的字符串或用于执行某些操作的函数。使用美元符号($
)语法在替换字符串中使用捕获组。
let str = "one two three";
let fixRegex = /(\w+)\s(\w+)\s(\w+)/; // 修改这一行
let replaceText = "$3 $2 $1"; // 修改这一行
let result = str.replace(fixRegex, replaceText);
删除开头和结尾的空白
let hello = " Hello, World! ";
let wsRegex = /^\s+|\s+$/g; // 修改这一行
let result = hello.replace(wsRegex,''); // 修改这一行