1. 正则表达式概述
正则表达式(RegEx)是一种用于描述字符串匹配规则的语言,通常用于检索和操作字符串数据。在 JavaScript 中,正则表达式是一个对象,允许你检查字符串是否符合某个模式,或者提取符合条件的部分。
2. 创建正则表达式
在 JavaScript 中,我们可以通过两种方式创建正则表达式:
-
字面量方式:
let reg = /a/i; // 正则表达式字面量,i表示忽略大小写 -
构造函数方式:
let reg = new RegExp('a', 'i'); // 通过构造函数创建,第二个参数是匹配模式
3. 常用正则表达式
- \w:匹配任意单词字符,等同于
[A-Za-z0-9_]。 - \W:匹配任意非单词字符,等同于
[^A-Za-z0-9_]。 - \d:匹配任意数字,等同于
[0-9]。 - \D:匹配任意非数字,等同于
[^0-9]。 - \s:匹配任意空白字符(如空格、制表符、换行符等)。
- \S:匹配任意非空白字符。
- \b:匹配单词边界。
- \B:匹配非单词边界。
4. 量词(重复匹配规则)
量词用于控制正则表达式中某个部分出现的次数。
-
{m} :匹配恰好 m 次。
/a{2}/ // 匹配连续出现两次的'a' -
{m,} :匹配至少 m 次。
/a{2,}/ // 匹配至少出现两次的'a' -
{m,n} :匹配 m 到 n 次。
/a{2,5}/ // 匹配出现 2 到 5 次的'a' -
+ :匹配 1 次或多次。
/a+/ // 匹配至少 1 次的'a' -
***** :匹配 0 次或多次。
/a*/ // 匹配任意数量的'a'(包括零次) -
? :匹配 0 次或 1 次,相当于
{0,1}。/a?/ // 匹配 0 次或 1 次的'a'
5. 字符集和排除字符集
- [a-z] :匹配任意小写字母。
- [A-Z] :匹配任意大写字母。
- [a-zA-Z] :匹配任意字母。
- [0-9] :匹配任意数字。
- [^x] :匹配任意非 x 的字符。
6. 特殊字符
-
. :匹配除了换行符以外的任意字符。
/./ // 匹配除换行符外的任意字符 -
****:用于转义特殊字符。
/./ // 匹配字面上的点号'.'
7. 正则表达式匹配方法
-
test() :检查字符串是否匹配正则表达式。
let str = 'abc'; let reg = /abc/; console.log(reg.test(str)); // true -
exec() :返回与正则匹配的结果。
let result = reg.exec(str); // 返回匹配的数组或 null
8. 示例
1. 简单正则匹配
let reg = /a/i; // 匹配 'a' 或 'A'
let str = 'a';
let result = reg.test(str);
console.log(result); // true
let str1 = 'b';
let result1 = reg.test(str1);
console.log(result1); // false
2. 使用字符集和排除字符集
let reg = /[a-z]/; // 匹配任意小写字母
let str = 'abc';
console.log(reg.test(str)); // true
reg = /[^a-z]/; // 匹配任意非小写字母
console.log(reg.test('1')); // true
3. 使用量词
let reg = /a{2}/; // 匹配恰好两次'a'
let str = 'aabcda';
console.log(reg.test(str)); // true
reg = /a{1,}/; // 匹配至少一次'a'
console.log(reg.test(str)); // true
str = 'abcvv';
reg = /a+/; // 匹配至少一次'a'
console.log(reg.test(str)); // true
str = 'bcvv';
console.log(reg.test(str)); // false
4. 特殊匹配
let reg = /./; // 匹配点号'.'
console.log(reg.test('abc.')); // true
reg = /\d+/; // 匹配一个或多个数字
console.log(reg.test('123')); // true
str = 'abckkAAA';
reg = /[^a-z]/i; // 匹配非字母字符(忽略大小写)
console.log(reg.test(str)); // false
str = '\n';
reg = /./; // 匹配换行外的任意字符
console.log(reg.test(str)); // false
reg = /^a$/; // 匹配只有'a'的字符串
str = 'abc';
console.log(reg.test(str)); // false
str = 'a';
console.log(reg.test(str)); // true
通过这个笔记,你可以快速掌握正则表达式的基础语法、使用方法以及一些常见的匹配规则。在实际开发中,正则表达式常常用于字符串的验证、查找和替换等操作。