我正在尝试调用函数,并传递两个参数。字符串和RegExp作为字符串。似乎测试工作正常,因为它进入了if部分,但是在调用parse函数后我没有得到结果。不确定有什么问题。有小费吗?谢谢!
var regEx_eNode = "S1";
var mystring = 'This is my S1ring!';
function getField(eventstr, regfield) {
var retval;
var regExpression = new RegExp(regfield,'g');
var reg_Exp;
if (regExpression.test(eventstr)) {
reg_Exp = regExpression.parse(eventstr);
alert("reg_Exp[1]");
retval = reg_Exp[1];
alert(retval);
} else {
retval = "not_available";
}
return retval;
}
alert('Result: ' + getField(mystring,regEx_eNode));
答案 0 :(得分:0)
JS RegExp
没有使用.parse()
方法。您可以使用String#match
或RegExp#exec
。
此外,请勿将/g
修饰符与RegExp#test
方法中使用的正则表达式一起使用,因为这可能会导致意外结果。
使用
var regEx_eNode = "S1";
var mystring = 'This is my S1ring!';
function getField(eventstr, regfield) {
var retval;
var regExpression = new RegExp(regfield); // No `/g`!
var reg_Exp;
if (regExpression.test(eventstr)) {
reg_Exp = eventstr.match(regExpression); // <- String#match()
if (reg_Exp) {
retval = reg_Exp[0]; // Get the whole match
alert(retval);
} else {
alert("No match!");
}
} else {
retval = "not_available";
}
return retval;
}
alert('Result: ' + getField(mystring,regEx_eNode));
&#13;