对匹配/不匹配的正则表达式返回true/false

mar*_*zzz 32 javascript regex

我在Javascript上有这个正则表达式

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

如果myS不是那种格式,我需要返回"false" ,否则返回true.

我的意思是 :

var myS = "00 - ??:??:?? - a";  // TRUE
var myS = "00 - ??:?:?? - a";   // FALSE
Run Code Online (Sandbox Code Playgroud)

如何检查正则表达式是否与字符串匹配?

Lig*_*ica 106

这里的函数可能更合适RegExp.test,它明确地给出了true或false.

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

console.log(/lolcakes/.test("some lolcakes"));
// Output: true
Run Code Online (Sandbox Code Playgroud)


use*_*716 19

使用双逻辑NOT运算符.

return !!removedTL;
Run Code Online (Sandbox Code Playgroud)

这将转换为true/false取决于是否找到匹配.

没有匹配给你null,转换为false.

一个或多个匹配为您提供一个转换为的数组true.


作为替代方案,您可以使用.test()而不是.match().

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

...直接给你一个布尔结果.


Les*_*nks 15

如果没有匹配,match则返回该方法null.

  • 这不是最好的答案.RegExp.prototype.test()是OP正在寻找的东西. (3认同)
  • 那么如何将其转换为“ true / false”? (2认同)
  • @Leslie:`null!= false` (2认同)

Meg*_*iko 6

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

如果匹配,removedTL 将保存一个布尔值 true,如果不匹配,则为 false