检查一个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');