正则表达式是前端开发中常用的一种技术,在处理字符串时可以借助正则表达式来实现更加复杂的匹配操作。在 JavaScript 中,使用正则表达式进行字符串匹配时,有两个常用的函数:exec()
和 match()
。本文将探讨这两个函数之间的区别。
exec()函数
exec()
是 RegExp 对象的一个方法,用于在字符串中查找匹配项。具体来说,它会返回一个数组,其中包含了与正则表达式匹配的子串以及捕获组(如果有)。如果没有找到匹配项,则返回 null
。
使用 exec()
的基本语法如下:
----- ----- - ---------- ----- --- - ------- -- -------- --- ------ - ----------------
其中,/pattern/
是正则表达式模式,str
是目标字符串,result
是存储匹配结果的数组。
如果匹配成功,result[0]
将会是匹配的子串,而其他元素则会对应正则表达式中的每个捕获组。例如,假设我们要从以下字符串中匹配出年份:
----- --- - ---- ---- -- ------ ----- ----- - ---------- --- ------ - ----------------
result
数组的值将为 ["2023", "2023"]
。其中,result[0]
包含整个匹配的字符串,而 result[1]
则是捕获组中的值。
match()函数
match()
是字符串对象的一个方法,用于返回一个包含所有匹配子串的数组。如果没有找到匹配项,则返回 null
。
使用 match()
的基本语法如下:
----- ----- - ----------- ----- --- - ------- -- -------- --- ------ - -----------------
其中,/pattern/g
是正则表达式模式,str
是目标字符串,result
是存储匹配结果的数组。
与 exec()
不同的是,match()
不会返回捕获组的信息。例如,假设我们要从以下字符串中匹配出年份:
----- --- - ---- ---- -- ------ ----- ----- - --------- --- ------ - -----------------
result
数组的值将为 ["2023"]
,不包含任何捕获组信息。
区别
exec()
和 match()
之间的最大区别在于它们返回的结果不同。exec()
返回一个数组,其中包含了正则表达式匹配的子串以及捕获组(如果有)。match()
返回一个数组,其中仅包含匹配的子串。
另一个区别在于,match()
方法只能通过字符串调用,而 exec()
方法必须通过正则表达式对象调用。
示例代码
下面是一个使用 exec()
和 match()
进行匹配的示例代码:
----- --- - ---- ---- -- ------ ----- ----- - ----------- -- -- ------ ---- --- -------- ----- --------- - ---------------- --- ----- - ------------------ ------------- -- ----- ------------------- - -- -- ------- ---- ----- ------- - ----------------- ---------------------
执行结果如下:
----- ---- -- ----- -- - ------ -
可以看到,exec()
返回了包含捕获组信息的数组,而 match()
则仅返回了匹配的子串。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/11280