Próbuję zawęzić następujące wyrażenia regularnego:Regex ciąg znaleźć numery nie wychodząc z 91
/\b([0-9]{22})\b/
tylko mecz 22 cyfrowych numerów, które nie zaczynają się "91"
. Czy ktoś wie, jak to zrobić?
Próbuję zawęzić następujące wyrażenia regularnego:Regex ciąg znaleźć numery nie wychodząc z 91
/\b([0-9]{22})\b/
tylko mecz 22 cyfrowych numerów, które nie zaczynają się "91"
. Czy ktoś wie, jak to zrobić?
Jeśli silnik regexp ma zero width negative lookahead, a następnie:
/\b((?!91)[0-9]{22})\b/
(?!91)
powoduje wzór dopasować tylko jeśli kolejne dwa znaki nie 91, ale nie spożywają te znaki, pozostawiając im towarzyszyć [0-9]{22}
.
Wiele silników regexp pozwala również na cyfry dziesiętne w postaci \d
. Jeśli twój robi, a następnie:
/\b((?!91)\d{22})\b/
Bingo! To działało idealnie. Dzięki. – user77413
@ user77413, Nie ma za co, a dzięki za znacznik wyboru. –
Spróbuj tego:
/\b(?:[0-8][0-9]|9[02-9])[0-9]{20}\b/
(negatywna zmiana z wyprzedzeniem jest zdecydowanie lepsza, jeśli jest obsługiwana) – Kobi
A jeśli negatywny poprzednik nie jest obsługiwany, jest to droga. –
Jakiego języka lub silnik wyrażenie regularne używasz? –