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

Ruby 如何使用正则表达式识别Pan编号?,ruby,regex,Ruby,Regex,我正在尝试编写一个正则表达式,它将验证字符串的格式以匹配“aaaaa 9999a”。前五位为“A-Za-z”,后四位为数字,最后一位为“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'

我正在尝试编写一个正则表达式,它将验证字符串的格式以匹配“aaaaa 9999a”。前五位为“A-Za-z”,后四位为数字,最后一位为“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。

您需要将其作为实际的正则表达式写出(也就是说,您忽略了表达式周围的/)

试试这句话:

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]
,什么不起作用?你的正则表达式对我来说似乎是正确的。注意数字范围是:0001到9999