在使用 TruClient 协议 (Firefox) 在 Vugen 中创建脚本时,我有一个Evaluate JS on object
查找对象的步骤,其中包含以下内容object.innerHTML
:
Foo Bar<br />BAZ
<br />
我需要BAZ
从该文本中提取以在其他地方使用,因此我在 JS 部分中有以下代码,以使用正则表达式提取它:
var regex = /Foo\s+Bar<br\s+\/>(.*)\s*<br \/>/i; // Shows as red in the TC JS editor, but no error icon shows, so not sure what the error may be.
var matches = [];
var match;
matches = regex.exec(object.innerHTML);
match = matches[matches.length - 1];
window.alert(match); // For debugging purposes
但是,当我运行脚本时,这会失败并出现以下错误:
** 6: Evaluate JavaScript var regex = /Foo\s+B... alert(match); on Foo Bar
** failed - an argument is invalid: 'Code': JavaScript exception
'TypeError: matches is null' during evaluation
我在这里测试了这个正则表达式,它按预期工作。
使用webtoolkit online JS tester,我已经成功地在代码上测试了以下变体,以确保它提取了我需要的内容:
var data = "Foo Bar<br />BAZ<br />";
var regex = /Foo\s+Bar<br\s+\/>(.*)\s*<br \/>/i;
var matches = [];
var match;
matches = regex.exec(data);
match = matches[matches.length - 1];
alert(match);
这BAZ
将按预期返回。
编辑
我最初认为这是 Vugen/TruClient 特定的问题。然而,睡在上面并阅读 Michael Galos 的回答(如下)之后,我意识到这是一个通用的 Javascript 问题,所以我也添加了 Javascript 标记。