2015-04-29 31 views
2

我有以下正则表达式以匹配长度为1和4之间的任何数字,如果需要则使用-字符。匹配除'-0'以外的任何数字(或否定数字)

^[-]?\d{1,4}$ 

但是,我想排除可能的匹配列表-0。我试过以下,但它似乎打破了一切。

^[-]?(?!-0)\d{1,4}$ 

我该如何实现我的目标?

+0

您是否也想匹配“-03”? –

回答

1

只要把不包括组之前:

^(?!-0)-?\d{1,4}$ 

请注意,你不必把括号内的减号。

+0

我不敢相信我没有想到!谢谢,这就是我所需要的,尽管我稍微修改了'(?! - 0 $)',这样字符串如'-012'就会匹配(我将在后面去掉前面的0)。 –

+0

@DavidGard我想知道这个,因此在你的问题下的评论。 –

1

更改为:

^(?!-?0)[-]?\d{1,4}$ 

这将不会匹配任何号码以 “0” 或开始 “-0”。

如果你想匹配的数字“0”,而不是“-0”开头,使用:

^(?!-0)[-]?\d{1,4}$ 
1

只需通过连接正数和负数:

^([0-9]{1,4})|(-[1-9][0-9]{0,3})$ 
相关问题