JS 正则方法详解

在 JavaScript 中,正则表达式是一种强大的工具,用于在字符串中搜索和匹配特定的模式。通过使用正则表达式,我们可以完成诸如验证邮箱地址、提取关键词、替换文本等各种任务。本文将详细介绍 JavaScript 中常用的正则方法,帮助您更好地理解和应用正则表达式。
构造正则表达式对象
在 JavaScript 中,我们可以通过两种方式构造正则表达式对象:使用字面量或者使用构造函数。
使用字面量构造正则表达式
我们可以使用斜杠 /.../ 来创建一个正则表达式对象。例如:
let pattern = /hello/;
在这个示例中,pattern 是一个正则表达式对象,其模式为 hello。
使用构造函数构造正则表达式
除了字面量方式,我们还可以使用 RegExp 构造函数来创建正则表达式对象。例如:
let pattern = new RegExp('hello');
这两种方式都可以用来创建正则表达式对象,可以根据需要选择使用哪种方式。
RegExp 对象方法
test()
test() 方法用于测试字符串是否匹配正则表达式。如果匹配成功,返回 true,否则返回 false。
let pattern = /hello/;
let str = 'hello world';
console.log(pattern.test(str)); // 输出 true
exec()
exec() 方法用于在字符串中执行正则表达式,返回一个数组。如果匹配成功,则返回包含匹配信息的数组;如果匹配失败,则返回 null。
let pattern = /hello/;
let str = 'hello world';
console.log(pattern.exec(str)); // 输出 ["hello", index: 0, input: "hello world"]
数组中第一个元素是与正则表达式匹配的字符串,之后的 index 表示匹配的起始位置,input 表示被匹配的输入字符串。
字符串方法
除了 RegExp 对象的方法外,JavaScript 的字符串对象也提供了一些与正则相关的方法。
match()
match() 方法用于检索字符串中与正则表达式匹配的子串,返回一个数组。如果没有找到匹配,则返回 null。
let str = 'hello world';
let matches = str.match(/hello/);
console.log(matches); // 输出 ["hello"]
search()
search() 方法用于检索字符串中指定的子串,返回子串的位置。如果没有找到匹配,则返回 -1。
let str = 'hello world';
let position = str.search(/world/);
console.log(position); // 输出 6
replace()
replace() 方法用于替换字符串中与正则表达式匹配的子串,返回替换后的新字符串。
let str = 'hello world';
let newStr = str.replace(/world/, 'javascript');
console.log(newStr); // 输出 "hello javascript"
正则表达式的修饰符
在构造正则表达式时,我们可以通过添加修饰符来指定匹配模式的一些特性。
i 修饰符
i 修饰符用于忽略大小写。例如:
let pattern = /hello/;
let str = 'Hello World';
console.log(pattern.test(str)); // 输出 false
let newPattern = /hello/i;
console.log(newPattern.test(str)); // 输出 true
g 修饰符
g 修饰符用于全局匹配,即查找所有匹配而不是找到第一个匹配。例如:
let pattern = /l/g;
let str = 'hello world';
console.log(str.match(pattern)); // 输出 ["l", "l", "l"]
m 修饰符
m 修饰符用于多行匹配。例如:
let pattern = /^hello/m;
let str = 'hello world\nhello universe';
console.log(str.match(pattern)); // 输出 ["hello"]
常用的正则表达式模式
匹配邮箱地址
let emailPattern = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/;
let email = 'example@example.com';
console.log(emailPattern.test(email)); // 输出 true
匹配 URL
let urlPattern = /^(http|https):\/\/[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/;
let url = 'https://www.example.com';
console.log(urlPattern.test(url)); // 输出 true
匹配手机号码
let phonePattern = /^1[3456789]\d{9}$/;
let phone = '13812345678';
console.log(phonePattern.test(phone)); // 输出 true
结语
本文介绍了 JavaScript 中常用的正则方法和修饰符,以及一些常用的正则表达式模式。通过学习和了解正则表达式的相关知识,您可以更加灵活地应用正则表达式,完成各种字符串处理任务。
极客笔记