在JavaScript中,正则表达式(Regular Expression)是一种强大的文本处理工具,可以用于检索、替换、匹配和提取符合特定模式的字符串。使用正则表达式取值通常涉及到match()
、exec()
、test()
等方法,以及捕获组(capturing groups)的概念。
()
包围的正则表达式部分,可以捕获匹配的子字符串,并可以通过索引来访问这些子字符串。String.prototype.match(regexp)
:在字符串中执行匹配,返回一个包含所有匹配结果的数组,如果没有匹配项,则返回null
。RegExp.prototype.exec(string)
:在字符串中执行匹配,返回一个包含匹配信息的数组,如果没有匹配项,则返回null
。每次调用都会从上一次匹配结束的位置开始。RegExp.prototype.test(string)
:测试字符串是否匹配正则表达式,返回true
或false
。假设我们有一个字符串,我们想从中提取所有的数字:
const str = "我的电话是123456789,另一个号码是987654321";
const regex = /\d+/g; // \d 表示数字,+ 表示一个或多个,g 表示全局搜索
const matches = str.match(regex);
console.log(matches); // 输出: ["123456789", "987654321"]
如果我们想要提取电话号码中的区号(假设区号是3位数字):
const str = "我的电话是010-12345678,另一个号码是021-98765432";
const regex = /(\d{3})-\d+/g; // (\d{3}) 是一个捕获组,匹配3位数字
let match;
while ((match = regex.exec(str)) !== null) {
console.log(match[1]); // 输出区号: "010" 和 "021"
}
exec()
时,如果使用了全局标志,需要重置lastIndex
属性,否则可能导致匹配失败或无限循环。正则表达式是一个强大但有时也复杂的工具,掌握其基础概念和技巧对于解决实际问题非常有帮助。
领取专属 10元无门槛券
手把手带您无忧上云