我在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
如何检查正则表达式是否与字符串匹配?
答案 0 :(得分:94)
此处更合适的功能可能是RegExp.test
,explicitly gives you true or false。
console.log(/lolcakes/.test("some string"));
// Output: false
console.log(/lolcakes/.test("some lolcakes"));
// Output: true
答案 1 :(得分:16)
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