详解正则表达式的五个主要方法(match、search、test、replace、split)

在上一篇文章中我们详细的介绍了正则表达式以及正则表达式如何使用,查看:(https://www.ciyawang.com/js-65.html)。

接下来我将介绍在实际编程中经常使用正则表达式的五个主要方法。

通过使用这些方法,可以更灵活、更高效地使用正则表达式模式。

如何使用 match 方法执行字符串搜索

在使用正则表达式的情况下,match() 方法可在字符串内检索指定的值,或找到一个或多个正则表达式的匹配。

语法

string.match(regexp)

参数值

参数描述
regexp必需。规定要匹配的模式的 RegExp 对象。如果该参数不是 RegExp 对象,则需要首先把它传递给 RegExp 构造函数,将其转换为 RegExp 对象。

返回值

类型描述
Array存放匹配结果的数组。该数组的内容依赖于 regexp 是否具有全局标志 g。 如果没找到匹配结果返回 null

实例:

const users = 'user, user1, user-2, myuser';

const regexp = new RegExp(/user-\d/);
 
const result = users.match( regexp );

console.log( result[0] );

输出结果:

user-2

对于此例中有一个以各种格式编写的用户名字符串。可以看到在实例中RegExp()用于指定正则表达式模式的使用方法。

通过像“users.match(regexp)”这样的写法,我们正在检测以“user-”开头的数字字符串模式。从执行结果可以看出,只有“user-2”对应这个模式。

如何通过search()方法搜索字符位置

现在让我们看一下“search()”方法!

search() 方法用于检索字符串中指定的子字符串,或检索与正则表达式相匹配的子字符串。

语法

string.search(searchvalue)

参数值

参数描述
searchvalue必须。查找的字符串或者正则表达式。

返回值

类型描述
Number与指定查找的字符串或者正则表达式相匹配的 String 对象起始位置。

实例:

const str = 'user-12, user-Mike, user-325, user-Jane';
 
const result = str.search( /user-\d{3}/ );
 
console.log( result );

输出结果:

20

在此示例中,包含用户名的字符串存储在变量“str”中。作为正则表达式模式,编写“/user-\d{3}/”来检测以 user- 开头的 3 位数字的用户名。

如果在准备好的字符串中写入“search ( /user-\d{3}/ )”,则只能检测到“user-325”。

由于“user-325”存在于字符串开头(0)的第20个字符中,这意味着执行结果将是20。

如何通过test()方法得到true/false

test() 方法用于检测一个字符串是否匹配某个模式.

如果字符串中有匹配的值返回 true ,否则返回 false。

语法

RegExpObject.test(string)

参数

参数描述
string必需。要检测的字符串。

实例:

const regexp = new RegExp(/^\d{2}$/);
 
const result1 = regexp.test( 8 );
const result2 = regexp.test( 45 );
const result3 = regexp.test( 768 );
 
console.log( '8 = ^d{2}$ 为' + result1 );
console.log( '45 = ^d{2}$ 为' + result2 );
console.log( '768 = ^d{2}$ 为' + result3 );

输出结果:

8 = ^d{2}$ 为 false
45 = ^d{2}$ 为 true
768 = ^d{2}$ 为 false

在本例中,我们将1位、2位、3位的数值为对象创建正则表达式模式。正则表达式模式【/^\d{2}$/】中指定只检测两位数的数值。

从执行结果可以看出,只有两位数“45”为真。

所以当我们只想获取真(true)/假(false)并创建条件分支时,test() 方法是一种很有效的方式。

使用正则表达式replace()方法替换字符串

接下来我们继续来看如何使用正则表达式对字符串进行替换和拆分!

使用正则表达式replace()方法替换字符串,replace() 方法用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串。

语法

stringObject.replace(regexp/substr,replacement)

参数

例如要将电话号码中的所有数字替换为“*”,代码如下:

参数描述
regexp/substr

必需。规定子字符串或要替换的模式的 RegExp 对象。

请注意,如果该值是一个字符串,则将它作为要检索的直接量文本模式,而不是首先被转换为 RegExp 对象。

replacement必需。一个字符串值。规定了替换文本或生成替换文本的函数。

返回值

一个新的字符串,是用 replacement 替换了 regexp 的第一次匹配或所有匹配之后得到的。

例如要将电话号码中的所有数字替换为“*”,代码如下:

const tel_data = "090-1234-5678";
const result = tel_data.replace(/^\d{3}-\d{4}-\d{4}$/, '***-****-****');
 
console.log(result);

手机号是由 3 位 + 4 位 + 4 位用连字符连接的字符串模式,对吧?

我们使用正则表达式的replace()方法可以很轻松的将其替换为“*”。在日常开发中replace()方法经常被使用,所以请牢记它!

详解正则表达式的五个主要方法(match、search、test、replace、split)

如何使用split()方法拆分字符串

split() 方法用于把一个字符串分割成字符串数组。

语法

string.split(separator,limit)

参数值

参数描述
separator可选。字符串或正则表达式,从该参数指定的地方分割 string Object。
limit可选。该参数可指定返回的数组的最大长度。如果设置了该参数,返回的子串不会多于这个参数指定的数组。如果没有设置该参数,整个字符串都会被分割,不考虑它的长度。

返回值

类型描述
Array一个字符串数组。该数组是通过在 separator 指定的边界处将字符串 string Object 分割成子串创建的。返回的数组中的字串不包括 separator 自身。

实例:

const str = 'user-1,user-2 user-3';
 
///使用“,(逗号)”“空白”作为分隔符
const result = str.split(/,|\s/);
 
console.log( result );

输出结果:

["user-1", "user-2", "user-3"]

在实例中目标字符串由“,(逗号)”分隔,例如“user-1,user-2”,或由“空格”分隔,例如“user-2 user-3”。

在这种情况下,使用正则表达式非常简单,使用“/,|\s/”,则将“,(逗号)”“空白”两者作为分隔符使用。

本文来源:词雅网

本文地址:https://www.ciyawang.com/js-69.html

本文使用「 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 」许可协议授权,转载或使用请署名并注明出处。

相关推荐