将RegEx传递给Javascript中的函数

时间:2016-06-20 13:53:54

标签: javascript regex

我正在尝试调用函数,并传递两个参数。字符串和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));

1 个答案:

答案 0 :(得分:0)

JS RegExp没有使用.parse()方法。您可以使用String#matchRegExp#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;
&#13;
&#13;