我正在尝试调用一个函数,并传递了两个参数。字符串和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));发布于 2016-06-20 22:09:59
JS RegExp没有.parse()方法。您可以使用String#match或RegExp#exec。
此外,不要对RegExp#test方法中使用的正则表达式使用/g修饰符,因为这可能会导致意外的结果。
使用
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));
https://stackoverflow.com/questions/37924352
复制相似问题