Подтвердить что ты не робот

Возвращает true/false для совпадающего/не совпадающего регулярного выражения

У меня есть это регулярное выражение на Javascript

var myS = "00 - ??:??:?? - a";
var removedTL = myS.match(/^(\d\d) - (\?\?|10|0\d):(\?\?|[0-5]\d):(\?\?|[0-5]\d) - (.*)/);

и мне нужно вернуть "false", если myS не находится в этом формате, true в противном случае.

Я имею в виду:

var myS = "00 - ??:??:?? - a";  // TRUE
var myS = "00 - ??:?:?? - a";   // FALSE

как проверить, соответствует ли регулярное выражение строке или нет?

4b9b3361

Ответ 1

Метод match вернет null если совпадений нет.

Ответ 2

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

console.log(/lolcakes/.test("some string"));
// Output: false

console.log(/lolcakes/.test("some lolcakes"));
// Output: true

Ответ 3

Используйте двойной логический оператор NOT.

return !!removedTL;

Это преобразуется в true/false в зависимости от совпадений совпадений.

Нет совпадений дает вам null, который преобразуется в false.

Одно или несколько совпадений дают вам массив, который преобразуется в true.


В качестве альтернативы вы можете использовать .test() вместо .match().

/^(\d\d) - (\?\?|10|0\d):(\?\?|[0-5]\d):(\?\?|[0-5]\d) - (.*)/.test( myS );

..., который дает вам логический результат напрямую.

Ответ 4

var myS = "00 - ??:??:?? - a";
var patt = new RegExp("^(\d\d) - (\?\?|10|0\d):(\?\?|[0-5]\d):(\?\?|[0-5]\d) - (.*)");
var removedTL = patt.test(myS);

removedTL будет содержать логическое значение true, если оно соответствует, false, если не сопоставлено