Zbudowałem ten regex, aby dopasować litery i cyfry i kropki
tylko wtedy, gdy nie są powtarzane pomyślnie
Przykład:

something.somethnElse.another.then.something

Jest to mecz, ponieważ kropki są oddzielone. Ale w następującym przypadku:

something..thensomething

Nie ma dopasowania, ponieważ jest jeden lub więcej kropek obok siebie to jest mój regex, polecam mi, proszę, dlaczego nie działa

[a-zA-Z0-9\.]+(?!\.{2,})

Próbowałem też.

[a-zA-Z0-9\.]+(?![\.]+)

Ale oboje dają dopasowanie do udanych kropek

4
Amine 13 sierpień 2014, 02:51

3 odpowiedzi

Najlepsza odpowiedź

Jesteś blisko. Możesz użyć tego regexa:

^(?!.*?\.{2})[a-zA-Z0-9.]+$

RegEx Demo

ps: Nie ma potrzeby ucieczki z kropki wewnątrz klasy znaków

2
anubhava 13 sierpień 2014, 06:49

Musisz użyć początku łańcucha ^ i końca łańcucha $ kotwice i umieść lookhead na początku.

/^(?!.*\.{2})[a-z0-9.]+$/i

Live Demo

2
hwnd 13 sierpień 2014, 03:26

Przede wszystkim wyrażenie powinno być zakotwiczone, w przeciwnym razie wymaga tylko bardzo minimalnego meczu.

Dodatkowo można pomyśleć o swoim wyrazie łańcucha liter i cyfr, które można przerywać dokładnie jedną kropką.

Więc:

/^(?:[a-z0-9]+|\.(?!\.))*$/
2
Ja͢ck 13 sierpień 2014, 03:08