Regex двоен вход в Ruby - рубин, регекс

Не трябва да допускам повече от един период (.) в низовия вход. Какъв е най-добрият начин да го направите, като използвате Ruby regex?

Отговори на коментарите:

Искам да огранича вписването само на един период в имейл адреса по време на регистрация по имейл. Имам основен имейл регенериран за въвеждане на имейл. Чудя се, ако е възможно да се ограничи броят на (.) чрез самия Regex, или би трябвало да използвам Ruby библиотеки.

Да, това е нов въпрос.

Редовният израз е такъв

/A([^@s]+)@((?:[-a-z0-9]+.)+[a-z]{2,})Z/i

Как да позволя само един период отвътре на която и да е част от него?

Отговори:

2 за отговор № 1

Ако приемем, че означаваш най-много един период в часттапреди @, теоретично би било възможно да направите това със следната регенерация (не позволява точката като първи или последен знак и не извършва друго валидиране):

^[^.]+(.[^.]+)?$

Горният регекс обработва само тази част преди@, ще трябва да добавите сами останалата част от регенера, която основно съответства на група от 1 или повече непериодични знака, последвана от незадължителна група от период и последвана от 1 или повече непериодични знака.

Аз съм любопитен защо бихте искали да ограничитерегистрация на потребители с най-много един период в имейл адреса им ... това не изглежда като разумно ограничение, тъй като е напълно реалистично потребителите да имат законно повече от един период в своя адрес.