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