当前位置: 首页 > 知识库问答 >
问题:

如何使用regex验证破折号分隔的值?

晏阳飙
2023-03-14

我有一个带数字和分隔符的字符串。数字可以用逗号分隔,也可以用连字符分隔。但可能永远不会有两个数字都用连字符分隔,中间没有逗号。

示例

有效:<代码>123,12,2,1-3,1,1-3,1

无效:<代码>123,12,2,1-3,1,1-3-5,1

我有一个几乎可以工作的正则表达式,除了它不检测那些1-3-5无效行。

如何改进以下方面?

^([0-9])+((,|-)[0-9]+)*$

共有3个答案

竺鸿骞
2023-03-14

您可以使用查找添加条件,它将搜索-digits-,因此您的正则表达式可以如下所示:

^(?!.*-\\d+-)[0-9]+([,-][0-9]+)*$
 ^^^^^^^^^^^^-negative look-ahead, match will fail if there is any -digits- in your string
傅鸿波
2023-03-14

这里有一个解决方案

^(?:\d+(?:-\d+)?(?:,|$))+$

演示

说明:匹配一个数字,可以选择后跟破折号和另一个数字,然后匹配逗号或字符串结尾。然后重复。

冉伯寅
2023-03-14

您可以分解输入:

  • 正常:一个或多个数字,可选后跟破折号,然后是一个或多个数字
  • 特殊:逗号

正常情况下的正则表达式可以写为\d(?:-\d) ;对于特殊情况,这只是,。

应用正常*(特殊正常*)*模式,并添加锚和量词,我们有:

^\d+(?:-\d+)?(,\d+(?:-\d+)?)*$
 类似资料:
  • 我使用PHP的Filter Functions(具体FILTER_VALIDATE_REGEXP)来验证输入数据。我有一个选项列表,$输入变量可以从列表中指定许多选项。 选项是(不区分大小写): 所有 奖励 加入 促销 流 签入 verified_checkin $输入变量几乎可以有任何值的组合。可能的成功案例是: all(值可以是all,也可以是逗号分隔的其他值列表,但不能同时是两者) 我能想到

  • 是有效输入。 无效 有效 无效 无效(只有7个数字) 我尝试了,但它接受重复的数字

  • 使用JavaScript,我只需要接受数字和逗号。 我使用的regex模式如下所示 还有一些类似的问题只是部分地处理了这一点: 带有逗号分隔符的数字的regex验证(只有整数,没有小数部分) 小数正则表达式,其中小数后面的数字是可选的(没有逗号分隔,小数部分限制为1位数) JavaScript函数需要允许数字、点和逗号(点、逗号和数字以任意顺序匹配)

  • 我随身携带一些信用卡号码,希望通过以下规则验证它们。 ►必须只包含数字(0-9) ► 它可以有4个一组的数字,由一个连字符“-”分隔 ► 它不能有4个或更多连续重复的数字 ►它可以包含没有任何空格的精确数字 输入: > 61234-567-8912-3456 4123356789123456 5133-3367-8912-3456 输出: > 有效的 无效(因为卡号没有分成4个相等的组) 有效 无

  • 问题内容: 似乎并没有解决问题。请帮忙… 谢谢你们的回应。我正在尝试将“-”替换为“#”,并且遇到了麻烦。 问题答案: 如果要以结尾的所有文件,请使用 或(请注意以下逗号: 如果您想不只一种类型的扩展名,请使用类似 正如其他人已经提到的那样,第一个命令告诉停止寻找标志和选项。第二个–是固定字符串模式。