Попробуйте этот шаблон:
(?(?<= )(?=[^ ])|^)(?:[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, если он есть, то он не будет ничего совпадать, так как пробел указывает на несколько доменных имен.
Еще одна демка