9个字符在开头需要2个字母,即ab1234567,10个字符需要包含所有数字i,e 1234567890。如何使用正则表达式执行此操作?
这是我尝试过的。
/^[a-zA-Z]{2}[\d]{7}|[\d]{10}$/
这似乎不起作用。我非常感谢你的帮助。
答案 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