我试图创建一个正则表达式来接受不以零或零个数字开头的数字。
示例匹配
0
50
798
示例拒绝
01
046
0014
00
0001
我的尝试是使用/[0]|[1-9][0-9]*/
来匹配以下文字中的值:
0,50,798
01,046,601,00,0000
此尝试可以在http://regexr.com/3bb00
运行答案 0 :(得分:4)
使用以下正则表达式:
^(0|[1-9]\d*)$
参见演示https://regex101.com/r/zT8uI2/2
此正则表达式包含2个部分0
或[1-9]\d*
,这是一个不以零开头的数字。
请注意,如果您想要匹配其他文本中的数字,则需要使用单词边界而不是开始和结束锚点:
\b(0|[1-9]\d*)\b
答案 1 :(得分:1)
您的正则表达式似乎有两种情况:
第一种情况很简单:/0/
第二种情况也很简单/[1-9]\d*/
。 [1-9]
匹配非0的数字。然后,我们可以有0位或更多位数。
要获得这两种情况,只需使用条形图或
/0|[1-9]\d*/
答案 2 :(得分:0)
if(input[0] == '0' && input.size() > 1) // reject
else //accept
答案 3 :(得分:0)
从https://www.safaribooksonline.com/library/view/regular-expressions-cookbook/9781449327453/ch06s06.html获取提示 并改进它以否定从0开始的数字。
RE:\b[^0,]*([1-9][0-9]*|0)\b
文字:0,50,798,01,046,601,00,1000
仅匹配0,50和798
由于 Venkat