Ответ 1
Метод match
вернет null
если совпадений нет.
У меня есть это регулярное выражение на 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
как проверить, соответствует ли регулярное выражение строке или нет?
Метод match
вернет null
если совпадений нет.
Более подходящей функцией здесь может быть RegExp.test
, которая явно дает вам true или false.
console.log(/lolcakes/.test("some string"));
// Output: false
console.log(/lolcakes/.test("some lolcakes"));
// Output: true
Используйте двойной логический оператор NOT.
return !!removedTL;
Это преобразуется в true/false
в зависимости от совпадений совпадений.
Нет совпадений дает вам null
, который преобразуется в false
.
Одно или несколько совпадений дают вам массив, который преобразуется в true
.
В качестве альтернативы вы можете использовать .test()
вместо .match()
.
/^(\d\d) - (\?\?|10|0\d):(\?\?|[0-5]\d):(\?\?|[0-5]\d) - (.*)/.test( myS );
..., который дает вам логический результат напрямую.
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, если не сопоставлено