我想知道什么是检查字符串的最佳方式(邮件,密码..Etc).
/^...$/i.exec(a)
VS
/^...$/i.test(a)
> exec返回值
>测试真
测试:
// 1° way var mail = req.body.mail; if(check(mail)){
EXEC:
// 1° way var mail = req.body.mail; if(check(mail)){ // 2° way var mail = check(req.body.mail); if(mail){
执行或测试?和什么数字(如果执行1°或2°)
解
这种情况下测试更好.
一定会更快.
但最重要的
>测试执行他的所有工作.虽然执行不执行,因为更多的可以做,但我们不需要.
像Mattias Buelens一样,使用isMail()更合乎逻辑:是一个电子邮件:是或否.而exec:是一封电子邮件:email或null – > wtf?大声笑
解决方法
如果只需要测试一个输入字符串来匹配正则表达式,则RegExp.test是最合适的.它将给你一个布尔返回值,使其成为条件的理想选择.
RegExp.exec为所有捕获组和匹配索引提供了类似数组的返回值.因此,在匹配后需要处理捕获到的组或索引时,这很有用. (另外,与使用全局修饰符/ g时的String.match相比,it behaves a bit different)
最终,速度和效率并不重要.仍将评估正则表达式,并且所有匹配的组和索引将通过全局RegExp对象可用(尽管强烈建议您使用返回值).
至于如果测试,那只是个人品味的问题.将正则表达式测试的结果分配给具有有意义名称的变量(例如isEmail)可以提高可读性,但不仅如此,它们都可以.