当使用TruClient协议(火狐)在VuGen创建脚本,我 具有Evaluate JS on object
步骤,用于查找一个对象,与 以下object.innerHTML
:使用JavaScript正则表达式中评估JS在VUGEN TruClient协议对象步骤
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
我已经测试过此正则表达式here,和它的作品 预期。
使用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的回答(below)后,我意识到这是一个通用的JavaScript问题,所以我也为此添加了Javascript标记。
我想到了一夜,你的回答证实了这一点,所以我第一次做这些确切的变化今天早上没有运气的事情。我仍然收到相同的错误。我也试过以下内容:'var re =/Foo \ s + Bar
([\ s \ S] *)
/i'应该匹配ANY字符,包括字母数字,空格和换行符,是否正确?无论如何,这也失败了,我仍然得到错误。 –
我解决了这个问题,并会发布我的答案。你的帖子确定了问题的一部分,但不是全部。 –