我有一个带数字和分隔符的字符串。数字可以用逗号分隔,也可以用连字符分隔。但可能永远不会有两个数字都用连字符分隔,中间没有逗号。
示例:
有效:<代码>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]+)*$
您可以使用查找添加条件,它将搜索-digits-
,因此您的正则表达式可以如下所示:
^(?!.*-\\d+-)[0-9]+([,-][0-9]+)*$
^^^^^^^^^^^^-negative look-ahead, match will fail if there is any -digits- in your string
您可以分解输入:
正常情况下的正则表达式可以写为\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个相等的组) 有效 无
问题内容: 似乎并没有解决问题。请帮忙… 谢谢你们的回应。我正在尝试将“-”替换为“#”,并且遇到了麻烦。 问题答案: 如果要以结尾的所有文件,请使用 或(请注意以下逗号: 如果您想不只一种类型的扩展名,请使用类似 正如其他人已经提到的那样,第一个命令告诉停止寻找标志和选项。第二个–是固定字符串模式。