我正在开发一个程序,需要匹配正则表达式和字符串。该字符串实际上非常简单,但我当前的正则表达式有问题(我正在使用 .net 正则表达式引擎)
我当前的正则表达式是“^[VvEeTtPp][^a-zA-Z0-9\s]\d{0,12}?$”
现在,我想要匹配的字符串总是遵循这种模式
- 首先是一个字母(无论哪种情况,只允许使用 V、E、P、T 字母)
- 然后,破折号
- 最后是 4 到 12 位数字。
最后一个限制是正则表达式必须匹配任何符合规则的子字符串(例如“V”或“E-”或“P-123”)
正则表达式工作得相当好,但它会接受像“V--”这样的东西。
有人可以帮我写一个更好的表达方式吗?
谢谢
最佳答案
这应该可以做到:
^[EPTVeptv](-(\d{4,12})?)?$
编辑:
还要匹配“P-123”、“-123”和“123”等子字符串:
^(?=.)[EPTVeptv]?(-\d{,12})?$
编辑2:
在开头添加了正向前瞻,以便模式与子字符串“”不匹配。尽管这是合法值的有效子字符串,但我假设您不想要该特定子字符串...
关于.net - 需要帮助构建正则表达式以匹配特定字符串(内部示例),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1325108/