【问题标题】:Regex to require space after comma in list正则表达式在列表中逗号后需要空格
【发布时间】:2018-12-21 13:58:24
【问题描述】:

我想在列表中的每个逗号后都需要一个空格。我有这个,它适用于我的 5 到 7 位数字的列表,用逗号分隔。
^([^,]{5,7},)*[^,][^ ]{5,7}$
问题是它允许 12345,12345。我不想让它过去。 12345, 12345 应该通过。我也只需要 12345 即可通过,因此如果它只是一个 5-7 位数字,则不需要逗号和空格。

【问题讨论】:

标签: regex comma


【解决方案1】:

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

然后它不匹配逗号[^,],它将匹配第二个1,然后它必须不匹配空格[^ ]{5,7},但只剩下4个字符可以匹配2345,它不能匹配。

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

你可能会使用:

^[^,\s]{5,7}(?:, [^,\s]{5,7})*$

Regex demo

  • ^ 字符串开头
  • [^,\s]{5,7} 不匹配逗号的空格字符 5 - 7 次
  • (?:非捕获组
    • , [^,\s]{5,7} 匹配逗号、空格而不是逗号或空白字符 5-7 次
  • )*关闭非捕获组并重复0+次
  • $字符串结束

【讨论】:

    【解决方案2】:

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

    ^(?:\d{5,7}, )*\d{5,7}$
    

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

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

    【讨论】:

    • @Drop04 如果您认为有帮助,可以单击此答案旁边的灰色勾号将其标记为“已接受”。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-02-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多