【问题标题】:Javascript error regex not a function?Javascript错误正则表达式不是函数?
【发布时间】:2012-08-21 18:45:51
【问题描述】:

我在网上找到了一些代码 (stackoverflow https://stackoverflow.com/a/5774234/150062),它们正是我需要的。但我似乎无法让它运行。我收到一个错误"'/(\\d+)\\s*(second|min|minute|hour)/g' is not a function (evaluating 'regex(s)')";

var timespanMillis = (function() {
  var tMillis = {
    second: 1000,
    min: 60 * 1000,
    minute: 60 * 1000,
    hour: 60 * 60 * 1000 // etc.
  };
  return function(s) {
    var regex = /(\d+)\s*(second|min|minute|hour)/g, ms=0, m, x;
    while (m = regex(s)) {
      x = Number(m[1]) * (tMillis[m[2]]||0);
      ms += x;
    }
    return x ? ms : NaN;
  };
})();

我也从未听说过这个regex() 函数?是不是应该是别的东西?

【问题讨论】:

  • regexRegExp object,而不是函数。该代码的作者犯了一个错误。

标签: javascript


【解决方案1】:

这曾经是可能的,您可以将调用替换为 exec 以获得完全相同的机制:

m = regex.exec(s)

http://whereswalden.com/2011/03/06/javascript-change-in-firefox-5-not-4-and-in-other-browsers-regular-expressions-cant-be-called-like-functions/

【讨论】:

    【解决方案2】:

    我觉得

    regex.match(value)//or regx.exec(value)
    

    是你正在寻找的功能

    regex 是 RegExp 对象,而不是函数。这里列出Regular Expressions methods and usage的方法和函数

    如果匹配不起作用,则尝试像这样的 .test() 方法

    var match = /sample/.test("Sample text")
    

    var match = /s(amp)le/i.exec("Sample text")
    

    【讨论】:

    • 用那个替换它似乎不起作用......显然该代码根本不起作用,也不是有意的。显然是演示代码。
    • @Steven - 比尝试对象的 .test() 方法..检查给定答案链接上的方法
    猜你喜欢
    • 2016-06-01
    • 2023-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多