检查一个string是否与JS中的正则expression式匹配

我想使用JavaScript(可以与jQuery)做一些客户端validation,以检查一个string是否匹配正则expression式:

^([a-z0-9]{5,})$ 

理想情况下,这将是一个expression式,返回true或false。

我是一个JavaScript的新手,不match()做我所需要的? 它似乎检查部分string是否匹配正则expression式,而不是整个事情。

使用regex.test()如果你想要的是一个布尔结果:

 /^([a-z0-9]{5,})$/.test('abc1'); // false /^([a-z0-9]{5,})$/.test('abc12'); // true /^([a-z0-9]{5,})$/.test('abc123'); // true 

…你可以从你的正则expression式中删除() ,因为你不需要捕获。

使用test()方法:

 var string = "sample1"; var re = new RegExp("^([a-z0-9]{5,})$"); if (re.test(string)) { console.log("Valid"); } else { console.log("Invalid"); } 

你也可以使用match()

 if (str.match(/^([a-z0-9]{5,})$/)) { alert("match!"); } 

但是test()似乎更快,因为你可以在这里阅读。

match()test()之间的重要区别:

match()仅适用于string,但test()也适用于整数。

 12345.match(/^([a-z0-9]{5,})$/); // ERROR /^([a-z0-9]{5,})$/.test(12345); // true /^([a-z0-9]{5,})$/.test(null); // false // Better watch out for undefined values /^([a-z0-9]{5,})$/.test(undefined); // true 

如果您只想知道您的string是否与正则expression式匹配,请使用/youregexp/.test(yourString)

下面是一个查找特定HTML标记的例子,所以很清楚/someregex/.test()返回一个布尔值:

 if(/(span|h[0-6]|li|a)/i.test("h3")) alert('true');