正则表达式只允许9或10个字符?

时间:2014-01-02 22:23:34

标签: javascript regex

9个字符在开头需要2个字母,即ab1234567,10个字符需要包含所有数字i,e 1234567890。如何使用正则表达式执行此操作?

这是我尝试过的。

/^[a-zA-Z]{2}[\d]{7}|[\d]{10}$/

这似乎不起作用。我非常感谢你的帮助。

2 个答案:

答案 0 :(得分:10)

正则表达式中的|允许它匹配以下两种可能性中的任何一种:

^[a-zA-Z]{2}[\d]{7}

[\d]{10}$

也就是说,字符串的开头然后是2个字母和7个数字,后跟任何东西,或者后跟10个数字和字符串结尾的任何内容。试试这个:

/^([a-zA-Z]{2}\d{7}|\d{10})$/

(另请注意,我已从每个[]周围删除了\d - 没有必要让一个字符类只包含一个字符。)

答案 1 :(得分:8)

问题是^仅应用第一个选项,而$仅适用于第二个选项。

试试这个:

/^(?:[a-z]{2}\d{7}|\d{10})$/i