如何使正则表达式只接受不是以零或零开头的数字?
how to make a regular expressions to accept only digits not started with zero or zero only?
我正在尝试创建一个正则表达式来接受不以零或单个零数字开头的数字。
匹配示例
0
50
798
示例拒绝
01
046
0014
00
0001
我的尝试是使用 /[0]|[1-9][0-9]*/
来匹配以下文本中的值:
0, 50, 798
01, 046, 0014, 00, 0001
此尝试可以 运行 在 http://regexr.com/3bb00
使用以下正则表达式:
^(0|[1-9]\d*)$
查看演示 https://regex101.com/r/zT8uI2/2
此正则表达式包含 2 个部分,0
或 [1-9]\d*
,这是一个不以零开头的数字。
请注意,如果您想在其他文本中匹配您的数字,您需要一个单词边界而不是开始和结束锚点:
\b(0|[1-9]\d*)\b
嗯,为什么不像..
if(input[0] == '0' && input.size() > 1) // reject
else //accept
您的正则表达式中似乎有两种情况:
- 匹配单个零
- 匹配不以零开头的数字。
第一种情况很简单:/0/
第二种情况也很简单/[1-9]\d*/
。 [1-9]
匹配非 0 的数字。那么,我们可以有 0 个或更多数字。
要获得这两种情况,只需使用一个条来执行或
/0|[1-9]\d*/
从https://www.safaribooksonline.com/library/view/regular-expressions-cookbook/9781449327453/ch06s06.html那里得到小费
并改进它以否定以 0.
开头的数字
回复:\b[^0,]*([1-9][0-9]*|0)\b
文本:0、50、798、01、046、0014、00、0001
仅匹配 0、50 和 798
谢谢
文卡特
我正在尝试创建一个正则表达式来接受不以零或单个零数字开头的数字。
匹配示例
0
50
798
示例拒绝
01
046
0014
00
0001
我的尝试是使用 /[0]|[1-9][0-9]*/
来匹配以下文本中的值:
0, 50, 798
01, 046, 0014, 00, 0001
此尝试可以 运行 在 http://regexr.com/3bb00
使用以下正则表达式:
^(0|[1-9]\d*)$
查看演示 https://regex101.com/r/zT8uI2/2
此正则表达式包含 2 个部分,0
或 [1-9]\d*
,这是一个不以零开头的数字。
请注意,如果您想在其他文本中匹配您的数字,您需要一个单词边界而不是开始和结束锚点:
\b(0|[1-9]\d*)\b
嗯,为什么不像..
if(input[0] == '0' && input.size() > 1) // reject
else //accept
您的正则表达式中似乎有两种情况:
- 匹配单个零
- 匹配不以零开头的数字。
第一种情况很简单:/0/
第二种情况也很简单/[1-9]\d*/
。 [1-9]
匹配非 0 的数字。那么,我们可以有 0 个或更多数字。
要获得这两种情况,只需使用一个条来执行或
/0|[1-9]\d*/
从https://www.safaribooksonline.com/library/view/regular-expressions-cookbook/9781449327453/ch06s06.html那里得到小费 并改进它以否定以 0.
开头的数字回复:\b[^0,]*([1-9][0-9]*|0)\b
文本:0、50、798、01、046、0014、00、0001
仅匹配 0、50 和 798
谢谢 文卡特