2017-01-23 169 views
-1

该字符串应该是这样的正则表达式特定字符串

"1-7;IN;dd" 
(For example, 2;IN;43). 

首先值之前分号应该是数字1到7。而最后一个值之后第二个分号应该是01到99号。

我的建议

@"/^\d[1-7];IN;\d{1,2}$/" 

不能正常工作

+2

在正则表达式测试仪粘贴您的正则表达式。 '\ d [1-7]'不会做你认为它做的事。 – CodeCaster

+0

@CodeCaster我没有投票,但对我来说这似乎是一个合理的问题。有努力。呃,我猜可能缺乏研究。 –

+0

有些语言使用正斜杠来描绘正则表达式。通常,您应该使用正斜杠或引号,但不能同时使用两者。 – JDB

回答

2

你应该改变你的模式。

1)/在开始和结束不需要

2)\d[1-7]相当于[0-9][1-7],但只需要一个从17

3位数)\d{1,2}匹配一个或两个数字 - 在你的情况下,你需要两位数字(从0199,你应该排除00)。

使用此模式为正则表达式:

^[1-7];IN;(?!00)[0-9]{2}$ 
+1

'[0-9] {2}'也会匹配'00'。 –

+0

@WiktorStribiżew,谢谢,我编辑了我的回答 –

+0

@JDB,谢谢,我编辑了我的回答 –

0
@"^[1-7];IN;[1-9]\d?$" 

这个版本保证了最后一部分是大于0且避免了前导零。

+1

您已经正确识别了匹配OP所需输入所需的模式。现在你应该更进一步,解释OP出错的地方,特别是为什么'\ d [1-7]'和'/'是错误的选择。这会增加更多的价值......“教人钓鱼”等 – JDB

+0

这不会接受像'2; IN; 03'这样的字符串,但是OP声明它们应该是有效的...... –

+0

@JDB我明白这一点。谢谢。 – OlegI

相关问题