我正在尝试调用一个函数并传递两个参数。一个字符串和一个作为字符串的 RegExp。看起来测试工作正常,因为它正在进入 if 部分,但在调用解析函数后我没有得到结果。不知道出了什么问题。有小费吗?谢谢!
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));
最佳答案
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));
关于javascript - 将 RegEx 传递给 Javascript 中的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37924352/