当前位置: 首页 > 知识库问答 >
问题:

正则表达式匹配以逗号分隔的列表,末尾没有逗号

景阳曜
2023-03-14

我需要一个. Net(C#)正则表达式来匹配逗号分隔的数字列表,如果有逗号作为最后一个字符,这些数字将不匹配

123,123,123,123 true - correct match
123,123,123,123, false - comma on end 
123,123,123,,123 false - double comma
,123,123,123,123 false - comma at start
"" false - empty string

123 true - single value

我已经找到了这个Regex但是当结尾有逗号时匹配^([0-9] ,?) $

什么是符合这种模式的正则表达式模式?

编辑:为清晰起见添加了1个示例,正确答案适用于123

共有3个答案

湛联
2023-03-14

请试试这个

没有后缀/前缀逗号:[0-9](,[0-9])*

无前缀(可选后缀):[0-9](,[0-9] )*,?

没有后缀(可选前缀):,?[0-9](,[0-9])*

可选后缀和前缀:,?[0-9] (,[0-9] )*,?

叶冥夜
2023-03-14

试试这个:

//This regex was provided before the question was edited to say that
//a single number is valid.
^((\d+\s*,\s*)+(\s*)(\d+))$

//In case a single number is valid
^(\d+)(\s*)(,\s*\d+)*$ 

以下是测试结果

 123,123,123,123    match
 123,123,123,123,   no match 
 123,123,123,,123   no match
 ,123,123,123,123   no match
 ""                 no match (empty string)
 123                no match for the first regex, match for the second one

看,正则表达式没有给我预期的结果

编辑:修改正则表达式,使其包含不带任何逗号的单个数字的最后一个大小写。

金骞尧
2023-03-14

尝试使用以下模式:

^([0-9]+,)*[0-9]+$

你可以在这里测试。

 类似资料:
  • 问题内容: 我有一个幼稚的“解析器”,它只做以下事情: 但是mystring可以像 显然, 天真的拆分器不会这样做。为此,我仅限于 python 2.6标准库 , 因此无法使用pyparsing。 预期输出为 我正在尝试使用正则表达式执行此操作,但是面临以下问题: 我的第一次尝试 给了我 显然, 使非贪婪不解决问题。 因此, 我猜测我必须以某种方式使最后一个逗号(或)成为必需。 这样做实际上是行不

  • 问题内容: 在我的一个项目中,我不得不处理逗号分隔文件(CSV)。我必须基于逗号来拆分数据,而忽略引号内的逗号(即),因此我使用了另一个堆栈溢出问题(Java:拆分逗号分隔的字符串但忽略了引号中的逗号)中提到的表达式。一切工作都很好,直到最近我才注意到它不适用于下面提到的一种特定情况。 我需要在逗号上拆分的数据字符串为: 以我的理解为基础 拆分后的数据应返回一个大小为10的数组,该数组的后两个索引

  • 我在Javascript中有以下正则表达式: 这将检查字符串是否至少有两个大于1个字符的单词。 前- 我现在有了一个新的要求,我试图实现它,但不能正确执行。 新要求:能够有一个逗号分隔的相同类型的输入列表。不能以逗号结尾。根据上述规则,每个项目必须有效 如果没有逗号,则其也是有效的 所有字符都是字母,没有数字/特殊字符

  • 我使用以下正则表达式来验证单个电子邮件地址。如何使此正则表达式接受以逗号分隔的电子邮件地址列表? 我使用razor视图将正则表达式放置在输入标记中:

  • 问题内容: 我需要一个正则表达式模式,该模式只接受输入字段的逗号分隔值。 例如:。它应该拒绝像这样的值: 我还需要接受分号分隔的值。有人可以为此建议一个正则表达式模式吗? 问题答案: 最简单的形式: 演示在这里。 我只需要限制字母。我怎样才能做到这一点 ? 使用正则表达式(包括示例Unicode字符范围): 演示在这里。 用法示例: Java演示。

  • 问题内容: 我的文字如下: 谁能告诉我我必须使用哪些正则表达式分度数才能获得以下结果: 我在这里阅读Sun教程,直到“ Matcher类的方法”为止,但我仍然茫然。谢谢! 如果是这样,那将很容易,但是不幸的是,事实并非如此。有任何想法吗? 问题答案: 您可以直接使用split()方法,如下所示: (请注意,这将返回长度为5的数组,第一个位置为空字符串) 或者,如果您想使用模式/匹配器,可以这样做: