我想知道检查字符串的最佳方法是什么(例如邮件,密码..Etc)。
/^...$/i.exec(a)
VS
/^...$/i.test(a)
试验:
// 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){
exec 或测试?和什么数字(如果执行1°或2°)
解
测试对于这种情况更好。
但最重要的是
答案 0 :(得分:18)
如果您只需要测试输入字符串以匹配正则表达式,RegExp.test
是最合适的。它将为您提供boolean
返回值,使其成为条件的理想选择。
RegExp.exec
为您提供了一个类似数组的返回值,包含所有捕获组和匹配的索引。因此,在匹配后需要使用捕获的组或索引时,它非常有用。 (使用全局修饰符String.match
时,it behaves a bit different与/g
进行比较)
最终,它在速度或效率方面都不重要。仍将评估正则表达式,并且所有匹配的组和索引都将通过全局RegExp
对象提供(尽管强烈建议您使用返回值)。
关于if
测试,这仅仅是个人品味的问题。将正则表达式测试的结果分配给具有有意义名称的变量(例如isEmail
)可以提高可读性,但除此之外,它们都很好。