匹配数字与正则表达式

时间:2014-02-06 16:55:49

标签: java regex

我需要匹配第一个字符是a的数字 - (减号)或不是0(除非它是字符串中唯一的字符)而且我有点卡住了。 ^[-|1-9]?[0-9]+我目前已经得到了这个,但它会匹配任意数量的零。

示例:

应匹配:

-16
25
2005

不应该匹配:

-05
05
00001
0-017

1 个答案:

答案 0 :(得分:3)

尝试这样的模式:

^-?[1-9][0-9]*$

这将匹配字符串开头的可选-,后跟1到9之间的单个数字,然后是0到9之间的零个或多个数字。开始(^)和结束($)锚点确保在数字之前或之后不允许其他字符。

Demonstration

更新 pointed out以上模式将匹配任何正或负十进制整数而不带前导零,但它本身不匹配零。要处理这种情况,请在模式中添加一个替换:

^-?[1-9][0-9]*$|^0$

或者像这样:

^(-?[1-9][0-9]*|0)$