Regex 重复数字序列的正则表达式

Regex 重复数字序列的正则表达式,regex,numbers,expression,repeat,Regex,Numbers,Expression,Repeat,我想要的是一个reg表达式,它允许4-8个数字之间的序列,但前两个和后两个不能相同 比如说 1245612-包含匹配项 346731-不匹配 789287-不匹配 789278-包含一个匹配项如果希望前两位和后两位数字相同以匹配(您的示例表明这一点),则正则表达式^(\d\d)\d{0,4}\1$是合适的 请参阅示例中的正则表达式。如果您确实想要所描述的内容(前两位和后两位数字不匹配),则可以执行以下操作: (?!(\d\d)\d{0,4}\1)\d{4,8} 表达式的第一部分声明它与[两位数

我想要的是一个reg表达式,它允许4-8个数字之间的序列,但前两个和后两个不能相同

比如说

1245612-包含匹配项
346731-不匹配
789287-不匹配

789278-包含一个匹配项

如果希望前两位和后两位数字相同以匹配(您的示例表明这一点),则正则表达式
^(\d\d)\d{0,4}\1$
是合适的


请参阅示例中的正则表达式。

如果您确实想要所描述的内容(前两位和后两位数字不匹配),则可以执行以下操作:

(?!(\d\d)\d{0,4}\1)\d{4,8}
表达式的第一部分声明它与[两位数字][0和4位其他数字之间][同样的两位数字]形式的表达式不匹配,除此之外,它将匹配长度为4到8的任何数字序列

在实际操作中试用此正则表达式(使用Javascript样式的正则表达式):


对于此任务,我不需要reg表达式,或者我不理解此任务。
您只需将i[0]和i[1]与i[n]和i[n-1]进行比较。

您有两种可能:

  • 当两对相同时匹配

    ^(\d{2})\d{0,4}\1$
    
    看到了吗

  • 当两对不同时匹配

    ^(\d{2})\d{0,4}(?!\1)\d{2}$
    
    看到了吗


  • 字符串开头的锚定
    ^
    和字符串结尾的锚定
    $
    非常重要,否则会得到部分匹配。

    346731
    这怎么不匹配?这是怎么匹配的呢?您的描述与示例相矛盾。@nhahtdh
    12xxx12
    是匹配项,
    34yyy31
    不是匹配项。听起来很清楚。你不需要自动使用正则表达式。最后2个字符的数量可以使用mod 100函数进行OTAIN。例如,前2个可以用整型除法表示。这取决于您使用的是字符串还是整数。@lagrandmile:description:“前两个和后两个不能相同。”@nhahtdh:mmmmh。。。我懂了!好吧,看起来我看到了正则表达式应该在序列不好时匹配,这就是为什么我看起来很清楚。。。看起来有两种人,一种认为正则表达式匹配坏序列,另一种认为正则表达式匹配好序列:)给它“1234512”,它将匹配“234512”部分。@stema,我看不出问题所在。他从未指定序列应该是整个字符串;但是,如果这是一个要求,那么在正则表达式前面加上“^”并在后面加上“$”就很简单了,因为正则表达式匹配的输入字符串应该失败。@stema,您假设这个要求是匹配整个输入字符串,而不是简单地匹配字符串中的任何一个序列。这从来没有被指定过。为我快到了而欢呼,但正则表达式总是得到满足,尽管它在测试中工作得很好-当我开始使用它作为数据时,val regex pattern=“(\d\d)\d{0,4}\1”-它总是被标记为无效thoughts@amun1000反斜杠
    \
    在Javascript字符串中,用于启动字符串并在字符串中获取
    \
    ,您必须使用
    \\
    @stema来转义
    \
    本身。好了,这已经完成了我的任务-下面是数据val regex页面上的样子=“无效”数据val regex pattern=“^(\d\d)\d{0,4}\1$”id=“PINNumber“
    但是输入中的任何条目都被标记为无效-我在基于web的正则表达式测试仪上尝试了相同的表达式,没有问题。有什么建议吗?”?很appreciated@amun1000,您应该在问题中加入您正在使用的语言和一个简短的工作代码段,或显示问题的a。然后你会得到最好的答案。关于这个问题,你给我们的信息越多,我们就越能提供帮助。