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

时间:2018-12-21 13:58:24

标签: regex comma

我想在列表中的每个逗号后都需要一个空格。我已经知道了,它对我的​​5到7位数字(以逗号分隔)的列表非常有效。
    <Route path="/login" exact component={LoginContainer} />
问题是它允许12345,12345。我不想这样。 12345、12345应该通过。我也只需要12345即可通过,因此如果只是一个5-7位数字,则不需要逗号和空格。

2 个答案:

答案 0 :(得分:0)

我不了解您的正则表达式,但可以使用以下简单的方法:

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

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

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

答案 1 :(得分:0)

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

然后,它不匹配将与第二个[^,]匹配的逗号1,然后它必须不匹配空格[^ ]{5,7},但是只剩下4个字符,{ {1}},并且无法匹配。

如果第一部分失败,它将尝试匹配2345,该匹配项总共匹配6-8个字符。

您可以使用:

[^,][^ ]{5,7}

Regex demo

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