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

时间:2011-08-13 19:35:26

标签: javascript regex

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

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

如果myS不是那种格式,我需要返回“false”,否则返回true。

我的意思是:

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

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

5 个答案:

答案 0 :(得分:94)

此处更合适的功能可能是RegExp.testexplicitly gives you true or false

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

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

答案 1 :(得分:16)

使用双logical NOT operator

return !!removedTL;

这将转换为true/false,具体取决于是否找到匹配项。

没有匹配项会为您null提供转换为false

一个或多个匹配项会为您提供一个数组,该数组将转换为true


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

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

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

答案 2 :(得分:14)

如果没有匹配,match方法将返回null

答案 3 :(得分:3)

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,如果不匹配则保持为假

答案 4 :(得分:0)

由于我也更喜欢使用 match ,因此您可以执行以下变通方法以获取布尔结果:

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