Javascript ошибка регулярное выражение не функция?

Я нашел некоторый код онлайн (stackru /questions/25504331/javascript-preobrazovanie-stroki-te-1-chas-2-minutyi-do-vremeni-v-sekundah/25504340#25504340), который делает именно то, что мне нужно. Но я не могу заставить его работать. Я получаю ошибку "'/(\\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() функция тоже? Это должно быть что-то еще?

2 ответа

Решение

Раньше это было возможно, вы можете заменить звонок на 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/

Я думаю

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

это функция, которую вы ищете

регулярное выражение является объектом RegExp, а не функцией. здесь список методов и функций методов и использования регулярных выражений

если совпадение не работает, то попробуйте метод.test(), как этот

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

или же

var match = /s(amp)le/i.exec("Sample text")
Другие вопросы по тегам