ການການຄອມມູນຍາກຂອງເຈັສເສັກພະຍາດ

ການອະທິບາຍແລະການນໍາໃຊ້

exec() ການທົດລອງຄຳສັງເກດທີ່ຢູ່ໃນສາຍຄຳສັງເກດ

ການສະແດງຕົກຕ້ອງທີ່ມີຄວາມພິເສດ

ຖ້າພົບຄຳສັ່ງທີ່ຕົກຕ້ອງຈະມີອາລົມຂັດຂອງຄຳສັ່ງທີ່ຕົກຕ້ອງ null

ຕົວຢ່າງ

ຄວາມທີ 1

ຊອກຫາຄຳສັງເກດ "e" ໃນການຄອນສາຍທົດສະຕິກຳ

let text = "The best things in life are free";
let result = /e/.exec(text);

ທົດລອງດັ່ງກ່າວ

ຄວາມທີ 2

ຊອກຫາ "Hello" ແລະ "W3School" ໃນການຄອນສາຍທົດສະຕິກຳ

let text = "Hello world!";
// ຊອກຫາ "Hello"
let result1 = /Hello/.exec(text);
// ຊອກຫາ "W3School"
let result2 = /W3School/.exec(text);

ທົດລອງດັ່ງກ່າວ

ຄຳສັນຍານ

regexp.exec(string)

ພິທີ

ພິທີ 描述
string ທີ່ຕ້ອງຊອກຫາ

ຜົນການກັບຄືນ

ຊົນສັດ 描述
ອາລົມຂັດ ຖ້າພົບຄຳສັ່ງທີ່ຕົກຕ້ອງຈະມີອາລົມຂັດຂອງຄຳສັງເກດນັ້ນໃນອາລົມຂັດຂອງຄຳສັ່ງທີ່ຕົກຕ້ອງ

ຕາມບັນທຶກສັນຍານ

ຜົນການກັບຄືນ

ອາລົມຂັດຂອງຄຳສັ່ງທີ່ຕົກຕ້ອງ nullຕໍ່າຫຼັງນັ້ນຈະອະທິບາຍຂອງອາລົມຂັດຂອງຄຳສັ່ງທີ່ຕົກຕ້ອງ

ຈະຖືກປ່ອຍອອກ

ຊົນສັດ 描述
TypeError ຖ້າບັນດາວັດຖຸທີ່ເອິ້ນຕົວເລືອກນັ້ນບໍ່ແມ່ນ RegExp

ການອະທິບາຍ

ໃນຂະນະທີ່ການສະແດງຕົກຕ້ອງ RegExp ຄວາມຄິດສະແດງ Stringexec() ມີຄວາມມີສຳຄັນຫຼາຍທີ່ສຸດ。 RegExp.test()String.replace()String.match() ທັງສອງນັ້ນຍັງມີຄວາມຊັບຊ້ອນຫຼາຍ。

exec() ຈະຊອກຫາສາຍຄຳສັງເກດ stringຈາກ regexp ຕົກຕ້ອງດັ່ງກ່າວ exec() ພົບຄຳສັງເກດຄວາມຄິດສະແດງນັ້ນແລ້ວຈະກັບຄືນອາລົມຂັດຂອງຄຳສັ່ງທີ່ຕົກຕ້ອງດັ່ງກ່າວ null。ນັ້ນເປັນຕົວເລກທີ່ 0 ຂອງອາລົມຂັດຂອງຄຳສັ່ງທີ່ຕົກຕ້ອງກັບຄຳສັງເກດຄວາມຄິດສະແດງດັ່ງກ່າວນັ້ນ。ຕົວເລກທີ່ 1 ຂອງຄຳສັ່ງທີ່ຕົກຕ້ອງກັບ regexp 的第一个子表达式相匹配的文本(如果存在)。第 2 个元素是与 regexp 的第二个子表达式相匹配的文本,以此类推。通常,数组的 length 属性声明的是数组中的元素个数。除了数组元素和 length 属性之外,exec() 还返回两个属性。index 属性声明的是匹配文本的第一个字符的位置。input 属性指的就是 string。在调用非全局 RegExp 对象的 exec() 方法时,返回的数组与调用方法 String.match() 返回的方法相同。

在调用非全局模式的 exec() 方法时,它将进行检索,并返回上述结果。不过,当 regexp 是一个全局正则表达式时,exec() 的行为就稍微复杂一些。它在 regexp 的属性 lastIndex 指定的字符处开始检索字符串 string 。当它找到了与表达式相匹配的文本时,在匹配之后,它将把 regexp 的 lastIndex 属性设置为匹配文本的第一个字符的位置。这就是说,可以通过反复地调用 exec() 方法来遍历字符串中的所有匹配文本。当 exec() 再也找不到匹配的文本时,它将返回 null,并且把属性 lastIndex 重置为 0 。如果在另一个字符串中完成了一次模式匹配之后要开始检索新的字符串,就必须手动地把 lastIndex 属性重置为 0 。

注意,无论 regexp 是否是全局模式,exec() 都会将完整的细节添加到它返回的数组中。这就是 exec()String.match() 的不同之处,后者在全局模式下返回的信息要少得多。事实上,在循环中反复地调用 exec() 方法是唯一一种获得全局模式的完整模式匹配信息的方法。

浏览器支持

exec() 是 ECMAScript1 (ES1) 特性。

所有浏览器都完全支持 ES1 (JavaScript 1997):

Chrome IE Edge Firefox Safari Opera
支持 支持 支持 支持 支持 支持

正则表达式搜索方法

在 JavaScript 中,正则表达式文本搜索可以用不同的方法完成。

使用模式(pattern)作为正则表达式,这些是最常用的方法:

举例 描述
text.match(pattern) 字符串方法 match()
text.search(pattern) 字符串方法 search()
pattern.exec(text) RexExp 方法 exec()
pattern.test(text) RexExp 方法 test()