在JavaScript中,空正则表达式模式是否定义了行为

In JavaScript, does an empty regex pattern have defined behavior?

本文关键字:定义 是否 模式 正则表达式 JavaScript      更新时间:2023-09-26
var pattern = /(?:)/

从我的测试来看,它似乎与一切都匹配。这是定义的行为吗?

这并不能直接回答这个问题,但以下是规范对空正则表达式的说明:

15.5.4.14 String.prototype.split(分隔符,限制(

分隔符的值可以是空字符串、空正则表达式或可以匹配空字符串的正则表达式。

以及7.8.5正则表达式文字

注:正则表达式文字不能为空;字符//不是表示一个空的正则表达式文字,而是以单行注释开头。要指定一个空的正则表达式,请使用:/(?:)/

因此,假设它是.split()中分隔符的可接受值,我猜它是定义的行为,是对每个字符进行拆分的一种方式。

"fjeij;als#%^&é.'n isoij't;oi`1=+-]'r".split(/(?:)/);
["f", "j", "e", "i", "j", ";", "a", "l", "s", "#", "%", "^", "&", "é", ".", "
", " ", "i", "s", "o", "i", "j", "  ", ";", "o", "i", "`", "1", "=", "+", "-", "]", "
"]

/(?:)/匹配"nothing",它匹配所有内容。什么都没有。呵呵
是的,我很期待。