22

我正在尝试创建一个正则表达式来匹配具有以下条件的字符串

  • 长度 8
  • 第一个字符必须是字母 az 或 AZ
  • 剩下的 7 必须是数字 0-9

例子

  • a5554444
  • B9999999
  • c0999999

这是我到目前为止所拥有的

^[0-9]{8}$

检查第一个字符时我缺少什么?我试过了

^[a-zA-Z][0-9]{8}$

但这不起作用。

4

1 回答 1

62

我认为这就是你想要的:

^[a-zA-Z][0-9]{7}$

{...} 元字符仅匹配最前面的模式,在您的情况下是 [0-9]。正则表达式解释如下:

  1. 从字符串的开头开始 (^)
  2. 仅匹配第一个位置中的任何字符 az 或 AZ ([a-zA-Z]) 一次
  3. 匹配从第二个点开始的任何字符 0-9 ([0-9])
  4. [0-9] 步骤 3 中提到的上述模式必须恰好存在 7 次 ({7})

当您按照原始问题输入 {8} 时,您将假定字符串长度总计为 9:第一个字符不区分字母大小写,其余 8 个字符为数字。

于 2012-10-05T00:35:42.677 回答