Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript match()regex函数应该返回什么?_Javascript_Regex_Match - Fatal编程技术网

javascript match()regex函数应该返回什么?

javascript match()regex函数应该返回什么?,javascript,regex,match,Javascript,Regex,Match,举个例子: "12345".match(/(?=(\d{4}))/g); 将上面这一行粘贴到我的(Chrome)控制台中会返回[“”,“”],但我正在尝试提取[“1234”,“2345”]数组。似乎表明我确实应该期待一系列匹配 这个字符串上的特定正则表达式肯定会返回那些匹配项,正如昨天证明的那样 如果我对该函数做出了错误的假设和/或误用了它,请任何人澄清预期的行为应该是什么,以及我在这里可以采取的任何替代方法。编辑:如上所述,正则表达式似乎不是适合该工作的工具 为了弥补自己的不足,这里有一个有

举个例子:

"12345".match(/(?=(\d{4}))/g);
将上面这一行粘贴到我的(Chrome)控制台中会返回
[“”,“”]
,但我正在尝试提取
[“1234”,“2345”]
数组。似乎表明我确实应该期待一系列匹配

这个字符串上的特定正则表达式肯定会返回那些匹配项,正如昨天证明的那样


如果我对该函数做出了错误的假设和/或误用了它,请任何人澄清预期的行为应该是什么,以及我在这里可以采取的任何替代方法。

编辑:如上所述,正则表达式似乎不是适合该工作的工具

为了弥补自己的不足,这里有一个有趣的解决方案,涉及数组和
slice
。文字
4
可以替代任何其他数字,以达到类似效果

console.log(
“12345”.split(“”).map((u,i,a)=>a.slice(i,i+4).join(“”)).slice(0,1-4)
)
你引用了这个问题。为什么不从那里接受答案()的代码

“12345”出了什么问题。匹配(/(?=(\d{4}))/g)
是指在
[“”,“”]
中,第一个
“”
对应于
$0(整个匹配)=“”,$1(第1组)=“1234”
,第二个
“”
(由于
g,数组类似于
[$0(匹配1),$0(匹配2)]


如果省略
g
“12345.match”(/(?=(\d{4}))/);
),您将得到
[“”,“1234”]
[$0(匹配),$1(匹配)]
)。

(1)您不能在多个匹配中匹配源字符串中的同一字符,这显然是您想要的,因为“234”在两个所需匹配中都是。(2) 前瞻并不是捕获它所期待的字符,所以这就是为什么会得到空字符串的原因。你不能只是从答案中窃取正则表达式,而是忽略使用正则表达式的代码。Chrome为您的代码生成预期的输出。如果你使用你链接的答案中提供的代码,你会得到你想要的结果。@Rawing-正如我在那里的评论中所说,代码给我带来了无限循环。今天晚些时候我将再次访问它,但是
match()
更吸引我,因为它看起来更短/更可读。请指定您对字符串的期望值。这只生成一个匹配项,而不是两个匹配项。