用Javascript括住Regex

用Javascript括住Regex,javascript,regex,Javascript,Regex,我有一个这种类型的JSON数组: [ { text: '[Chapter1](chapter1.html)'}, { text: '[Chapter2](chapter2.html)'}, { text: '[Chapter3](chapter3.html)'}, { text: '[Chapter4](chapter4.html)'} ] 尝试在数组中循环并获取括号中的文本(第1章、第2章等) 应打印: ["Chapter1","Chapter2","Chapter3","

我有一个这种类型的JSON数组:

[ 
  { text: '[Chapter1](chapter1.html)'},
  { text: '[Chapter2](chapter2.html)'},
  { text: '[Chapter3](chapter3.html)'},
  { text: '[Chapter4](chapter4.html)'}
]
尝试在数组中循环并获取括号中的文本(第1章、第2章等)

应打印:

["Chapter1","Chapter2","Chapter3","Chapter4"]
但是,我在多个阵列中得到了奇怪的长结果:

[ '[Chapter1]',
  'Chapter1',
  index: 0,
  input: '[Chapter1](chapter1.html)' ]
[ '[Chapter2]',
  'Chapter2',
  index: 0,
  input: '[Chapter2](chapter2.html)' ]
[ '[Chapter3]',
  'Chapter3',
  index: 0,
  input: '[Chapter3](chapter3.html)' ]
[ '[Chapter4]',
  'Chapter4',
  index: 0,
  input: '[Chapter4](chapter4.html)' ]

我错过了什么?我讨厌正则表达式。

没有你想象的那么奇怪,每个
regex.exec
结果实际上是一个看起来像其中一个块的对象,它包含匹配的整个文本,匹配的子组(你只有一个子组,这是你真正想要的结果),输入中匹配成功的索引和给定的输入

所有这些都是成功匹配的有效和有用的结果

简短的回答是,您只想将第二个数组元素推送到结果中。

就像
regex.exec(text)[1]

没有你想象的那么奇怪,每个
regex.exec
结果实际上是一个看起来像其中一个块的对象,它包含匹配的整个文本,匹配的子组(你只有一个子组,这是你真正想要的结果),输入中匹配成功的索引和给定的输入

所有这些都是成功匹配的有效和有用的结果

简短的回答是,您只想将第二个数组元素推送到结果中。
regex.exec(text)[1]

不仅返回匹配的文本,还返回许多其他信息,包括输入、匹配索引、匹配的文本和所有捕获组的文本。您可能需要匹配组1:

result.push(sectionRegex.exec(aResponse[x].text)[1]);
除此之外,您不应该使用
for(…in…
循环在数组上循环,因为如果在
数组的
原型
中添加任何方法,那么循环就会中断。(例如,
forEach
垫片)

不仅返回匹配的文本,还返回许多其他信息,包括输入、匹配索引、匹配文本和所有捕获组的文本。您可能需要匹配组1:

result.push(sectionRegex.exec(aResponse[x].text)[1]);

除此之外,您不应该使用
for(…in…
循环在数组上循环,因为如果在
数组的
原型
中添加任何方法,那么循环就会中断。(例如,
forEach
垫片)

使用的正则表达式将返回一个数组。 第一个元素是要测试的字符串。下一个元素是括号之间的匹配 试试这个:

result.push(sectionRegex.exec(aResponse[x].text)[1]); 

使用的正则表达式将返回一个数组。 第一个元素是要测试的字符串。下一个元素是括号之间的匹配 试试这个:

result.push(sectionRegex.exec(aResponse[x].text)[1]); 

我不确定你在用JSON.parse做什么,但这里有一个,也许这会让它更清楚???我正在用GET请求从外部服务器获取JSON。我不知道怎么了。我检查了所有的东西。它仍然返回不在json数组中的字段。@adeneo我附加了我得到的结果。@adeneo,您正在记录
exec
的结果,它不是全部匹配,而是全部匹配+信息。签出fiddle@adeneo帖子,在他的代码末尾,他过滤掉了你需要的信息。不确定你在那里用JSON.parse做什么,但这里有一个,也许这会让它更清楚???我通过GET请求从外部服务器获取JSON。我不知道怎么了。我检查了所有的东西。它仍然返回不在json数组中的字段。@adeneo我附加了我得到的结果。@adeneo,您正在记录
exec
的结果,它不是全部匹配,而是全部匹配+信息。查看fiddle@adeneo发布的信息,在代码末尾,他过滤掉了您需要的信息。更多信息:更多信息: