验证数字,其中包括最大一个连字符(-),但从字符计数中排除
允许四个数字之间只有一个连字符。
正则表达式下面的示例还将连字符数计算为字符数:
^(?!\D*(\d)(?:\D*\1)+\D*$)(?=.{4}$)[0-9]*(?:-[0-9]*){0,1}[0-9]+$上面的一个验证1112为它的4位,但它将失败111-2,因为有一个连字符和五个数字,这是不允许的。
示例:
1234允许作为它的4位数123-4,因为我们需要跳过计数的连字符1111。111-1不允许,因为数字是相同的,甚至用连字符-分隔。发布于 2022-07-27 09:25:06
您可以使用
^(?!\D*(\d)(?:\D*\1)+\D*$)(?=(?:\D*\d){4}\D*$)[0-9]+(?:-[0-9]+)?$见regex演示。详细信息
^ -字符串的开始(?!\D*(\d)(?:\D*\1)+\D*$) -字符串不能包含相同的数字,而不管字符串中存在任何非字字符。(?=(?:\D*\d){4}\D*$) -是一种正的前瞻,它需要四次出现任意零或多个非数字,后面跟着一个数字,然后是任何零或多个非数字,直到字符串的末尾。[0-9]+(?:-[0-9]+)? -一个或多个数字,然后是一个可选的-和一个或多个数字。$ -字符串的末端。https://stackoverflow.com/questions/73126481
复制相似问题