首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >正则表达式需要列表中逗号后的空格

正则表达式需要列表中逗号后的空格
EN

Stack Overflow用户
提问于 2018-12-21 21:58:24
回答 2查看 240关注 0票数 0

我想要求列表中的每个逗号后面都有一个空格。我得到了这个,它对我的5到7位数字的列表非常有效,用逗号分隔。

^([^,]{5,7},)*[^,][^ ]{5,7}$

问题是它允许12345,12345。我不希望这件事过去。12345,12345应该通过。我也只需要12345就可以通过,所以如果只是一个5-7位的数字,就不需要逗号和空格了。

EN

回答 2

Stack Overflow用户

发布于 2018-12-21 22:38:56

您的正则表达式与12345,12345不匹配,因为此部分([^,]{5,7},)*将从头开始匹配,包括逗号。

然后,它不匹配将与第二个1匹配的逗号[^,],然后它必须匹配不是空格[^ ]{5,7},而是只剩下4个字符要匹配,这是2345,它不能匹配。

如果第一部分失败,它会尝试匹配[^,][^ ]{5,7},它总共匹配6-8个字符。

您可以使用:

代码语言:javascript
复制
^[^,\s]{5,7}(?:, [^,\s]{5,7})*$

Regex demo

  • ^ string
  • [^,\s]{5,7}的开头不匹配逗号5-7的空白字符times
  • (?:非捕获组
    • , [^,\s]{5,7}匹配逗号、空格,而不匹配逗号或空白字符5-7 times

票数 1
EN

Stack Overflow用户

发布于 2018-12-21 22:01:47

我不理解您的正则表达式,但是像这样简单的东西应该可以工作:

代码语言:javascript
复制
^(?:\d{5,7}, )*\d{5,7}$

或者,如果您不打算只允许数字,

代码语言:javascript
复制
^(?:[^, ]{5,7}, )*[^, ]{5,7}$
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53886020

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档