2017-08-02 156 views
1

首先,我没有在正则表达式太多的经验,所以请裸陪我。我试图想出一个Data Annotation正则表达式来匹配以下格式。正则表达式只允许数字,逗号和破折号

38-30

100,25-30

4-5,5,1-5

基本上表达式应该只允许号码- 以任何顺序(短划线)和,(逗号)

我试过,但无法让它工作。

[RegularExpression(@"(0-9 .&'-,]+)", ErrorMessage ="Lot numbers are invalid.")] 
+0

'[正则表达式(@ “^ [0-9 \ - , - ] + $”,...]。' –

回答

2

我认为你的用例有一个CSV列表的数字,或范围的数字(确定为一个数字后面跟一个破折号,后面跟另一个数字)。我们可以使用下面的正则表达式:

[0-9]+(?:-[0-9]+)?(,[0-9]+(?:-[0-9]+)?)* 

此正则表达式的数字,后跟一个可选的仪表板和另一个号码相匹配,这一数量再其次是逗号和其他类似术语,任意次数。

在下面的演示中,我在正则表达式的两侧添加了锚点。你是否需要这样做取决于你打算如何使用模式。

Demo

+0

你的正则表达式不能正常工作,他说,他希望它在任何工作顺序。最后两行没有被检测为有效 – Spectarion

+0

@Spectarion哪个“最后两行?”如果我们将锚定添加到我的模式中,它就起作用了,如果没有锚定,那么在逻辑上应该失败的字符串上会发生部分匹配 –

+0

I你认为他需要使用一个CSV列表的数字,并使其能够正确使用CSV,我只是假设他需要一个正则表达式来允许只有3个字符:数字,短划线和逗号。 – Spectarion

相关问题