【问题标题】:How to make regex to enforce comma between every word?如何使正则表达式在每个单词之间强制使用逗号?
【发布时间】:2026-02-19 18:35:02
【问题描述】:

我正在编写一个 C# ASP.NET MVC 应用程序,我需要为用户输入实施一些规则。

在表格中,用户可以在表格 IRxxxxxx 上写一些事故案例编号,其中 x 可以是数字 (0-9)。我想制作一个正则表达式来检查输入是否可以由一个案例编号或多个用逗号分隔(以及逗号前后的一些可能的空格)组成。我尝试了几件事,但无法正确完成。

有效的输入可能是:

  • IR123456
  • IR123456、IR123456、IR123456(等等)
  • IR123456, IR123456,IR123456(注意第一个逗号后的空格)

无效的输入可能是:

  • IR123
  • IR1234567
  • ir123456
  • IR123456,,IR123456

【问题讨论】:

  • 到目前为止你尝试过什么?为什么它不符合您的要求/您在哪里卡住了?
  • 到目前为止我最好的选择是 (IR[0-9]{6},?)*IR[0-9]{6},它适用于 IR123456,IR123456,IR123456,但不适用于之前的空格或在逗号之后。

标签: c# regex asp.net-mvc


【解决方案1】:

这应该适用于大多数正则表达式引擎:

^IR\d{6}(,\s?IR\d{6})*$

这会查找“IR”后跟任意 6 位数字。如果有其他 ID,这将确保在前一个 ID 后面有一个逗号(带有可选空格)。

Regex101

【讨论】:

  • 你好,这行得通,但是如果逗号前后可以有任意数量的空格,那么像 "IR123456 , IR123456" 这样的字符串也会被匹配会是什么样子? :)
  • 您好,正则表达式 ^IR\d{6}(\s*,\s*?IR\d{6})*$ 就像我想要的一样工作,谢谢您的回答: )
【解决方案2】:

你可以试试这个正则表达式:^((^|,)\s*IR\d{6})+$

【讨论】:

  • 你好。感谢您的回答,但这并不是我所追求的,因为它与整个字符串“IR123456,IR123456,IR123456”不匹配,而仅匹配 IR123456 数字。
最近更新 更多