验证'/'字符时出现正则表达式问题

时间:2013-03-25 12:19:00

标签: c# .net regex

我在使用正则表达式方面遇到了一些问题。我想在输入总线号时验证用户输入。

示例:37,37A,37S,37A / L,16A / 250,16A / 250K等

我想出的正则表达式是

(^\d{1,3}[A-Z]{0,3})|(^[\d{1,3}[A-Z]{0,3}\/\d{0,3}[A-Z]{0,3}])

验证37,37A,37S但是当验证37A / L时它失败了。有人能告诉我这出错了吗?

注意:我正在为文本框使用正则表达式验证器。我把它放在ValidationExpression中。

3 个答案:

答案 0 :(得分:2)

您无需转义/字符,请尝试以下操作:

(^\d{1,3}[A-Z]{0,3}(?:/\d{0,3}[A-Z]{0,3})?)

您还可以通过指定EOS字符来强制执行整行与正则表达式匹配:

(^\d{1,3}[A-Z]{0,3}(?:/\d{0,3}[A-Z]{0,3})?$)

请注意@MaxwellTroyMiltonKing在评论中指出整个正则表达式的括号是不必要的:

^\d{1,3}[A-Z]{0,3}(?:/\d{0,3}[A-Z]{0,3})?$

答案 1 :(得分:2)

由于未指定字符串的结尾,因此出现了问题。

替换为

(^\d{1,3}[A-Z]{0,3}$)|(^\d{1,3}[A-Z]{0,3}\/\d{0,3}[A-Z]{0,3}$)

希望这有帮助。

答案 2 :(得分:0)

试试这个:

^(\d{1,3}[A-Z]{0,3})(\/\d{0,3}[A-Z]{0,3})?$