2012-03-11 51 views
1

我不是很好的正则表达式,并想知道如果有人可以帮我写这个字符串的正则表达式:正则表达式匹配逗号分隔值INV-x,INV-y,INV-z等?

INV-6001,INV-5067,INV-6795 

INV-始终是相同的,再其次是四个数字(这可能会增长到五六个或更多)。

它们可以用逗号无限分隔。

我会如何写这样的东西?

任何帮助将不胜感激,即使你可以指向我的发电机的方向,我可以粘贴它,它会吐出我的表情。

干杯

+1

什么是“有效”输入和什么是“无效”输入?有些答案“有效”,但可能不包括预期的情况:使用正则表达式全部是关于*定义一组精确的规则*。一旦你定义了这些,你将能够更专注和相关的更新你的标题/问题。 – 2012-03-11 23:16:07

+0

有效的是: INV- <---这是固定的(不能有任何不同) 它总是后面跟着数字,可以用逗号分隔。 – xqwzid 2012-03-11 23:33:26

回答

0

这至少需要一个INV-部。它不会接受主要或尾随逗号。它只接受4(或5或6)数字。 (以前的报表假设它是固定在两端。)

INV-\d{4,6}(?:,INV-\d{4,6})* 

或者,也许更可取(正则表达式可以成为快速过于复杂!),是分裂输入“”然后确保每个部分在一个循环中符合INV-\d{4,6}。如果需要用数据完成,那么部分正则表达式方法的“代码开销”变得最小。

快乐编码。

0
(?<=,|^)([^,]*)(,\1)+(?=,|$) 

Reference

+0

这将匹配'X,X,X',但不匹配'X,Y,Z'。 – 2012-03-11 23:45:02

相关问题