我正在为一位同事进行代码审查,他有一个正则表达式,如下所示:
if ($value =~ /^\d\d\d\d$/) {
#do stuff
}
我告诉他他应该将其更改为:
if ($value =~ /^\d{4}$/) {
#do stuff
}
他回答说,为了可读性他更喜欢第一个(我发现第二个更具可读性,但这是一个宗教辩论,我将保留第二天)。
我的问题是:一个人对另一个人有实际好处吗?
最佳答案
他们做的事情完全相同,因此就实用性而言,这是一个优先考虑的问题。一种或另一种性能差异是否很小?谁知道,但这绝对是微不足道的。
当模式长度不固定时,例如\d{12,16}
,\d{2,}
等,量词更加有用(并且是必需的)。
我更喜欢\d{4}
,它比\d\d\d\d
更容易让我的大脑解析
如果要匹配的是字符类而不是简单的数字,该怎么办? [aeiouy0-9]{4}
或[aeiouy0-9][aeiouy0-9][aeiouy0-9][aeiouy0-9]
吗?