Моят редовен израз = "(d+)1+"
Моята цел е да улови повтарящи се патети като 2323, 1212, 345345, които имат различни цифри. Текущото regex също улавя 11,22,11111, което трябва да изключи
Пример - За вход = 44556841335158684945454545
Съвпадения са 44 55 45454545 Мачовете трябва да бъдат - 45454545
Как да напиша regex, който изключва 44 и 55 и дава резултати, които имат различни цифри
Отговори:
0 за отговор № 1Можете да опитате да кажете „два различни повторения“
((d)(?!2)d)1
Кръгли скоби са номерирани отляво; така 1
съвпада с целия външен чифт на скоби и (?!2)
се отнася до вътрешните скоби около първата цифра, ограничавайки втората цифра, така че тя не може да бъде идентична на първата.
Демонстрация: https://regex101.com/r/5f2CEf/1
Очевидно е, че добавете a +
в края да покрие всички съседни повторения на мача.
1 за отговор № 2
Ето и регреса, който смятам, че искате:
(d)((?!1)d)
Малко обяснение:
(d)
d съответства на цифра (равна на [0-9])
((?!1)d)
Отрицателен поглед
(?!1)
Уверете се, че Regex по-долу не съвпада
1
съвпада със същия текст, който съвпада с последната група на първото заснемане
d
съвпада с цифра (равна на [0-9])
Ето една бърза JS демонстрация:
var s = "44556841335158684945454545"
console.log(s.match(/(d)((?!1)d)/g))