获取非前导零的数字(包括“-”)

时间:2019-04-19 16:33:19

标签: regex

我想匹配数字,包括带有非前导零的“-”和不带“-”的普通数。因此,我想使用正则表达式。

正则表达式
应该匹配0 1 2 3 123 2-3 22-33

应该不匹配0123-123 01234

以下正则表达式几乎可以正常工作:

\b(0|[1-9][0-9]*\-?[0-9]*)\b

数字0 1 2 3 123 2-3 22-33和01234正确匹配,但0123-123不正确:部分匹配。 https://regex101.com/r/0Po3Ed/1

1 个答案:

答案 0 :(得分:4)

您可以在正则表达式中使用否定式:

(?<!-)\b(?:0|[1-9][0-9]*(?:-[0-9]+)?)\b

Updated RegEx Demo

(?<!-)是负向后搜索表达式,如果您在数字前有-,则匹配失败。