本文系统介绍JavaScript中正则表达式的创建方式、核心方法及应用技巧。内容涵盖字面量与构造函数的区别,详解exec、test、match、search、replace和split六个方法的语法与返回值差异,并解析g、i等标志对匹配结果的影响,帮助开发者掌握正则在字符串处理中的实际应用。
JavaScript正则表达式入门
JavaScript中正则表达式的学习:
为了方便调试,可以使用在线正则工具。下文所有示例代码均可在CodePen平台查看。
创建正则表达式
1. 创建正则表达式
var re = /ab+c/; //方式一 正则表达式字面量
var re = new RegExp("ab+c"); //方式二 RegExp对象的构造函
1)正则表达式字面量在脚本加载时即被编译。如果正则表达式是固定常量,采用这种方式能获得更优的性能。
2)使用构造函数RegExp(),支持在运行时编译正则表达式。当正则模式可能动态变化,或模式来源不确定(如用户输入)时,构造函数方式更为合适。
特殊字符与语法
2. 正则表达式中的特殊字符
\ ^ $ * + ? . (x) (?:x) x(?=y) x(?!y) x|y {n}
{n,m} [xyz] [^xyz] [\b] \b \B \cX \d \D \f \n \r
\s \S \t \v \w \W \n \0 \xhh \uhhhh
正则表达式常用方法
3. 正则表达式中的方法
主要包含6个方法:exec、test、match、search、replace和split。
其中,exec和test由RegExp对象调用;而match、search、replace和split由String对象调用。
exec:
该方法用于在指定字符串中执行搜索匹配操作,返回一个数组或null。语法如下:regexObj.exec(str)
示例代码:
var re = /quick\s(brown).+?(jumps)/ig; var result = re.exec('The Quick Brown Fox Jumps Over The Lazy Dog'); 返回结果:

test:
用于测试字符串是否匹配正则表达式,返回布尔值true或false。语法如下:regexObj.test(str)
match:
在字符串中执行查找匹配操作,返回一个数组;若未匹配到则返回null。
与exec的区别在于调用方式:match由字符串调用,而exec由RegExp对象调用。
此外,若表达式包含“g”标志,将返回所有匹配字符串的数组;若无“g”标志,则行为与exec相同。以下示例包含“g”标志。语法如下:str.match(regexp)
示例代码:
var re = /quick\s(brown).+?(jumps)/ig;
var result = re.exec('The Quick Brown Fox Jumps Over The Lazy Dog');
返回结果:

search:
用于在字符串中测试匹配,返回匹配子串的起始索引;若未找到则返回-1。语法如下:str.search(regexp)
例如,若对前述示例调用search,返回的数值为4。
replace:
用于在字符串中执行查找匹配,并使用替换字符串替换匹配到的子串。语法如下:str.replace(regexp|substr,newSubStr|function[,flags])
var re = /(\w+)\s(\w+)/;
var str = "John Smith";
var result = str.replace(re, "$2, $1");
返回的结果将是:“Smith, John”
split:
使用正则表达式或固定字符串分隔字符串,并将子字符串存储到数组中。语法如下:str.split([separator[,limit]])
limit参数用于限制分割后数组的元素个数。以下示例中,一个表达式包含括号,另一个不包含,返回数据存在差异。
示例代码:
var re = /(\d)/;
var result = 'Hello 1 word. Sentence number 2.'.split(re);
console.log(result);
var re = /\d/;
var result = 'Hello 1 word. Sentence number 2.'.split(re);
console.log(result);
返回结果:

执行信息与标志
4. 正则表达式执行返回信息
var myRe = new RegExp("d(b+)d", "g");
var myArray = myRe.exec("cdbbdbsbz");
console.log(myArray);
代码中返回的结果如下:


5. 正则表达式标志

var re = /\w+\s/g;//表达式一
var re = new RegExp("\\w+\\s", "g");//表达式二
var str = "fee fi fo fum";
var myArray = str.match(re);
console.log(myArray);
表达式一和表达式二返回的结果相同,均为下方的数组:

以上就是本文的全部内容,希望对大家的学习有所帮助。