11

我试过正则表达式只接受数字。第一个字符不能为 0“任何正整数,不包括 0”的正则表达式是什么,但这不能按照我的要求工作。

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

我试过了

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

需要微调。

4

3 回答 3

44

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

利用

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

解释:

  1. ^: 从锚开始
  2. [1-9]: 匹配 1 到 9 中的一个数字
  3. [0-9]{5}: 精确匹配包含范围内的五个数字0-9
  4. $: 以锚结尾

正则表达式可视化

Regex101 游乐场

HTML5 演示:

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

于 2015-11-23T07:19:14.770 回答
1

这个正则表达式涵盖;

  1. PIN 码不是从零开始

  2. 仅允许 6 位数字

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

  4. 在 3 位数字后允许 1 个空格(例如 431 602)

([1-9]{1}[0-9]{5}|[1-9]{1}[0-9]{3}\\s[0-9]{3})
于 2020-05-19T11:46:13.360 回答
0

一些网站和银行有在 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} - 可以出现一次或永远不会出现的空间
  • [0-9]{3}$ - 最后 3 位必须是 0-9 范围内的数字
于 2019-08-25T07:06:54.813 回答