如何使用正则表达式识别Pan编号?

时间:2011-10-15 15:38:34

标签: ruby regex

我正在尝试编写一个正则表达式,它将验证字符串的格式以匹配“AAAAA9999A”。前五位是“A-Za-z”,接下来的4位是数字,最后一位是“A-Za-z”。

为此,我将我的正则表达式编写为[A-Za-z]{5}\d{4}[A-Za-z]{1}

当然这不起作用。

validates_format_of :pan_number, :with => [A-Za-z]{5}\d{4}[A-Za-z]{1}, :message => 'is not in a format of AAAAA9999A'

我做错了什么?

此外,我希望第四个字符是C,P,H,F,A,T,B,L,J,G中的一个而不是A-Z。

1 个答案:

答案 0 :(得分:1)

你会想把它写成一个真正的正则表达式(也就是说,你错过了表达式周围的。)

尝试使用此行:

validates_format_of :pan_number, :with => /[a-z]{3}[cphfatblj][a-z]\d{4}[a-z]/i, :message => 'is not in a format of AAAAA9999A'

这也将第四个字符验证为C,P,H,F,A,T,B,L,J,G之一,它在正则表达式上使用不区分大小写的标记(/i),所以你不必写[A-Za-z]