1

I am trying to call a function and I pass two parameters. A string and a RegExp as a string. It seems the test works fine because it is going into the if part, but I do not get a result after the parse function is called. Not sure what is wrong. Any tips? Thanks!

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));
Luzidl
  • 11
  • 2

1 Answers1

0

JS RegExp does not feature the .parse() method. You may use either String#match or RegExp#exec.

Also, do not use /g modifier with the regex that is used in RegExp#test method since this may lead to unexpected results.

Use

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));
Wiktor Stribiżew
  • 607,720
  • 39
  • 448
  • 563