Подтвердить что ты не робот

Напишите ng-шаблон, чтобы запретить пробелы и специальные символы

Я пытаюсь получить angular ng-pattern, чтобы проверить, что имя пользователя не имеет пробелов или специальных символов. Следующая форма возвращает false, если вы вводите пробелы или специальные символы. Однако это становится правдой, как только вы вводите a-z, A-z или 0-9. Я пробовал ng-pattern = "/[^\s] +/" и \S и [^], но они не имеют никакого значения.

<form name="myform">
  valid? {{ myform.$valid }}
  <input type="text" name="username" ng-model="username" ng-pattern="/[a-zA-Z0-9^ ]/" required/>
</form>

Здесь форма в плунге: http://plnkr.co/edit/6T78kyUgXYfNAwB4RHKQ?p=preview

4b9b3361

Ответ 1

Попробуйте следующий шаблон:

/^[a-zA-Z0-9]*$/

Это позволяет использовать только буквенно-цифровые символы.

Ответ 2

Чтобы нарисовать конкретный ответ, который я искал, у меня уже был шаблон, предложенный Sniffer /^[a-zA-Z0-9]*$/, но angular по-прежнему игнорировал ведущие/конечные пробелы. Как Кристиан упоминает в комментариях:

Angular будет обрезать модель ввода, что означает, что проверка не запускается для пробелов. Вы можете добавить ng-trim="false" на вход, чтобы исправить это.

Обратите внимание, что angular пытается защитить вас, по умолчанию тихо обрезая пробелы. В моем случае я хочу, чтобы пользователь знал, что конечные пробелы недопустимы.