正则表达式匹配从1开始,最多12位数字

时间:2016-10-27 07:50:39

标签: regex

我正在搜索匹配任何字符串的正则表达式:

  1. 大于零的数字
  2. 该号码至少有一位数字
  3. 不超过12位
  4. 我尝试了这个没有成功:

    ^[1-9][0-9]*{1,12}$
    

    感谢。

4 个答案:

答案 0 :(得分:3)

如果允许前导零大于零的数字,如果您使用的工具/语言支持前瞻,则可以使用^(?!0+$)[0-9]{1,12}$。前瞻用于确保数字不完全由零组成。

答案 1 :(得分:1)

^[1-9][0-9]{0,11}$

从1-9之间的单个数字开始,然后在0-9

之间有0到11次出现的数字

答案 2 :(得分:1)

使用^[1-9]\d{0,11}$,检查非零数字,后跟0到11位数。

你的正则表达式在第二个字符类之后有一个量词*,它允许零或多次出现一个数字(可以超过11位)。量词{1,12}也将前一个模式的最小出现次数设置为1,将最大出现次数设置为12.因此,您必须避免*并将最小值和最大值分别设置为0和11,因为已经存在单个数字的模式。

答案 3 :(得分:1)

正则表达式的问题

    ^[1-9][0-9]*{1,12}$

是与*一起使用的星标{1,12},因为星号*表示前一个符号的任意数量的重复,而{1,12}表示一到十二次重复 - 因此明星*{a,b}不会混合,必须专门使用,而不是一起使用。