我正在搜索匹配任何字符串的正则表达式:
我尝试了这个没有成功:
^[1-9][0-9]*{1,12}$
感谢。
答案 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}
不会混合,必须专门使用,而不是一起使用。