Как написать регулярное выражение для проверки домена, которое вызовет ошибку шаблона в угловой форме - PullRequest
0 голосов
/ 26 марта 2019

Я проверяю поле домена в форме.Я использую Validators.pattern(this.domainPattern) для этого.Я использую ниже шаблон:

public domainPattern: string = "^(?:[a-z0-9][a-z0-9-]{0,61}[a-z0-9]\.)+[a-z0-9][a-z0-9-]{0,61}[a-z0-9]$";

Он отлично работает во многих случаях.Но когда в домене есть пробел, это не вызывает ошибку шаблона.Чего мне не хватает?

Быстрая помощь будет высоко оценена.

Спасибо.

1 Ответ

1 голос
/ 26 марта 2019

Попробуйте этот шаблон:

(?(?<= )(?=[^ ])|^)(?:[a-z0-9][a-z0-9-]{0,61}[a-z0-9]\.)+[a-z0-9][a-z0-9-]{0,61}[a-z0-9]

Я только что добавил (?(?<= )(?=[^ ])|^), условно, который проверяет:

сначала он проверяет условие (?<= ), если предшествующее является пробелом, если это так, то проверьте, не является ли то, что после, пробелом с (?=[^ ]), если условие не выполняется, то проверьте, не находимся ли мы в начале строка с ^.

Демо

UPDATE

ОП сказал:

Я хочу, чтобы пользователь ввел только одно действительное имя домена. Если пользователь вводит "google.com google.com", он должен рассматриваться как недействительный

Тогда вы можете использовать этот шаблон

^(?!.* .*)(?:[a-z0-9][a-z0-9-]{0,61}[a-z0-9]\.)+[a-z0-9][a-z0-9-]{0,61}[a-z0-9]$

Только что добавил (?!.* .*), который проверяет, есть ли в следующей строке sapce, если он есть, то он не будет ничего совпадать, так как пробел указывает на несколько доменных имен.

Еще одна демка

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...