javascript - 将 RegEx 传递给 Javascript 中的函数

标签 javascript regex

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

关于javascript - 将 RegEx 传递给 Javascript 中的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37924352/

相关文章:

javascript - 使用 JavaScript 创建 base64 编码的图像

javascript - 错误 : Could not complete the operation due to error 8000000b

javascript - 将正则表达式量词合并到括号中

regex - 在Sublime Text 2中查找和批量编辑HTML元素的内容

javascript - TinyMCE内联模式: Get content of edited area on editor closing

javascript - Vue JS 改变一个数组中的数据

javascript - Meteor 方法在客户端返回 null,在客户端运行相同的方法返回正确的值

python - 使用正则表达式重命名 Pandas 数据框中的列

正则表达式匹配一位且仅一位

javascript - 匹配不以以下字符开头的字符串