JavaScript RegExp – 正则表达式
在 JavaScript 中使用正则表达式(RegExp)是非常常见的操作。正则表达式可用于搜索、替换、验证等操作。本篇文章将为您讲解 JavaScript 中的正则表达式,希望能对您有所帮助。
创建正则表达式
在 JavaScript 中可以使用两种方式来创建正则表达式。
直接量
使用直接量创建正则表达式非常简单,只需要将正则表达式放在两个斜杠之间即可。例如:
const regExp = /hello World/;
以上代码创建了一个正则表达式,它可以用于检测字符串中是否包含 “hello World”。
需要注意的是,直接量创建的正则表达式是固定的,即它们的模式匹配模式是固定的。
构造函数
使用构造函数创建正则表达式也很简单,只需要使用 RegExp() 函数即可。例如:
const regExp = new RegExp("hello World");
以上代码也创建了一个正则表达式,与前面的直接量创建的正则表达式是等价的。
需要注意的是,使用构造函数创建的正则表达式可以动态地生成模式匹配模式。例如:
const name = "john";
const regExp = new RegExp("\\b" + name + "\\b", "i");
上面的代码中,我们根据变量 name 来动态地生成了一个正则表达式。该正则表达式用于检测字符串中是否包含变量 name,而且不区分大小写。
正则表达式模式
正则表达式模式是由两部分组成的:模式匹配模式和标志。
模式匹配模式
正则表达式的模式匹配模式是用来进行搜索、匹配、替换等操作的规则。它是由字符、元字符和字符类等构成的。
字符
正则表达式中的字符可以直接匹配文本中相应的字符。例如,正则表达式 /hello/ 可以匹配文本中的 “hello”。
元字符
元字符是正则表达式中比较重要的一部分,它们是一些特殊的字符,用来表示一些特殊的意义。
以下是一些常用的元字符:
.:匹配除换行符外的任意字符。\w:匹配任意字母、数字和下划线。\W:匹配除了字母、数字和下划线以外的任意字符。\d:匹配任意数字。\D:匹配除了数字以外的任意字符。\s:匹配任意空白字符,包括空格、制表符、换行符等。\S:匹配除了空白字符以外的任意字符。^:匹配输入的开始位置。$:匹配输入的结束位置。*:匹配前面的子表达式零次或多次。+:匹配前面的子表达式一次或多次。?:匹配前面的子表达式零次或一次。{n}:匹配前面的子表达式恰好 n 次。{n,}:匹配前面的子表达式至少 n 次。{n,m}:匹配前面的子表达式至少 n 次,但不能超过 m 次。
字符类
字符类和元字符类似,但它们匹配的是一个字符集合。
以下是一些常用的字符类:
[abc]:匹配 a、b、c 中的任意一个字符。[^abc]:匹配除了 a、b、c 以外的任意一个字符。[a-z]:匹配任意小写字母。[A-Z]:匹配任意大写字母。[0-9]:匹配任意数字。[^\w]:匹配任意非字母、非数字、非下划线字符。
标志
标志是可选的,用来指定正则表达式的匹配模式。
以下是一些常用的标志:
i:忽略大小写。g:全局匹配。m:多行匹配。
例如,使用 /hello/gi 可以全局忽略大小写地匹配文本中所有的 “hello”。
RegExp 对象方法和属性
JavaScript 中的 RegExp 对象可以用来执行正则表达式,同时还提供了一些方法和属性来操作正则表达式。
test()
test() 方法用于检测一个字符串是否匹配某个正则表达式。例如:
const regExp = /hello/;
console.log(regExp.test("hello world")); // true
console.log(regExp.test("hi")); // false
exec()
exec() 方法用于在一个字符串中执行匹配搜索,并返回匹配结果的详细信息。例如:
const regExp = /hello (\w+)/;
const str = "hello world";
console.log(regExp.exec(str));
以上代码中,我们使用正则表达式 /hello (\w+)/ 匹配了字符串 “hello world”,并使用 exec() 方法返回了匹配结果的详细信息,包括匹配的字符串和捕获组等。
toString()
toString() 方法用于将正则表达式转换为字符串形式。例如:
const regExp = /hello/;
console.log(regExp.toString()); // /hello/
source
source 属性用于返回正则表达式的源代码(不包括开头和结尾的斜杠)。例如:
const regExp = /hello/;
console.log(regExp.source); // hello
字符串方法和正则表达式
除了 RegExp 对象提供的方法和属性外,JavaScript 中还有很多字符串方法可以和正则表达式一起使用,例如:
search()
search() 方法用于搜索一个字符串中是否存在某个正则表达式。例如:
const str = "hello world";
console.log(str.search(/world/)); // 6
replace()
replace() 方法用于搜索并替换一个字符串中的文本(可以使用正则表达式作为搜索模式)。例如:
const str = "hello world";
console.log(str.replace(/world/, "JavaScript")); // hello JavaScript
match()
match() 方法用于匹配一个字符串中的文本,并返回匹配结果的详细信息(可以使用正则表达式作为匹配模式)。例如:
const str = "hello world";
console.log(str.match(/hello (\w+)/)); // ["hello world", "world"]
结论
在 JavaScript 中,正则表达式是一个非常常见的操作。人们可以使用正则表达式来进行搜索、匹配、替换等操作。本文为您介绍了正则表达式的使用方法以及常见的匹配模式和标志。同时,我们还向您介绍了 RegExp 对象的方法和属性,以及字符串方法和正则表达式的使用方法。希望本文能够帮助您更好地使用正则表达式。
极客笔记