印度密码验证正则表达式 - 只有六位数字,不应以“0”开头

Indian pincode validation regex - Only six digits, shouldn't start with `0`

我已经尝试了 Regex accept numeric only. First character can't be 0 and What is the regex for "Any positive integer, excluding 0",但是没有达到我的要求。

我想要准确的 6 位数字,但不应以 0

开头

我试过了

^[1-9][0-9]{6}*$
^([^0][0-9]){6}$
...

需要微调。

^[1-9][0-9]{6}*$ 的问题是它是一个 无效的正则表达式 因为 {6}*^([^0][0-9]){6}$ 是它允许任何字符不是 0 后跟 六个 数字。

使用

^[1-9][0-9]{5}$

解释:

  1. ^: 以 anchor
  2. 开头
  3. [1-9]:正好匹配1到9中的一个数字
  4. [0-9]{5}:正好匹配0-9
  5. 范围内的五位数字
  6. $:以锚点结尾

Regex101 Playground

HTML5 演示:

input:invalid {
  color: red;
}
<input type="text" pattern="[1-9][0-9]{5}" />

一些网站和银行有在 3 位数字后间隔密码的习惯。 要同时匹配 515411 和 515 411,以下模式会有所帮助。

^[1-9]{1}[0-9]{2}\s{0,1}[0-9]{3}$
  • ^[1-9]{1} - 以数字 1-9 开头的 PIN 码
  • [0-9]{2} - 接下来的两位数字可能介于 0-9
  • 之间
  • \s{0,1} - Space 可能出现一次或永远不会出现
  • [0-9]{3}$ - 最后 3 位必须是 0-9 范围内的数字

这个正则表达式涵盖;

  1. PIN 码不是从零开始

  2. 只允许 6 位数字

  3. 允许 6 个连续数字(例如 431602)

  4. 允许在 3 位数字后添加 1 space(例如 431 602)

([1-9]{1}[0-9]{5}|[1-9]{1}[0-9]{3}\s[0-9]{3})