我想要求列表中的每个逗号后面都有一个空格。我得到了这个,它对我的5到7位数字的列表非常有效,用逗号分隔。
^([^,]{5,7},)*[^,][^ ]{5,7}$
问题是它允许12345,12345。我不希望这件事过去。12345,12345应该通过。我也只需要12345就可以通过,所以如果只是一个5-7位的数字,就不需要逗号和空格了。
发布于 2018-12-21 22:38:56
您的正则表达式与12345,12345不匹配,因为此部分([^,]{5,7},)*将从头开始匹配,包括逗号。
然后,它不匹配将与第二个1匹配的逗号[^,],然后它必须匹配不是空格[^ ]{5,7},而是只剩下4个字符要匹配,这是2345,它不能匹配。
如果第一部分失败,它会尝试匹配[^,][^ ]{5,7},它总共匹配6-8个字符。
您可以使用:
^[^,\s]{5,7}(?:, [^,\s]{5,7})*$^ string[^,\s]{5,7}的开头不匹配逗号5-7的空白字符times(?:非捕获组, [^,\s]{5,7}匹配逗号、空格,而不匹配逗号或空白字符5-7 times
发布于 2018-12-21 22:01:47
我不理解您的正则表达式,但是像这样简单的东西应该可以工作:
^(?:\d{5,7}, )*\d{5,7}$或者,如果您不打算只允许数字,
^(?:[^, ]{5,7}, )*[^, ]{5,7}$https://stackoverflow.com/questions/53886020
复制相似问题