Ответ 1
Попробуйте следующий шаблон:
/^[a-zA-Z0-9]*$/
Это позволяет использовать только буквенно-цифровые символы.
Я пытаюсь получить 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
Попробуйте следующий шаблон:
/^[a-zA-Z0-9]*$/
Это позволяет использовать только буквенно-цифровые символы.
Чтобы нарисовать конкретный ответ, который я искал, у меня уже был шаблон, предложенный Sniffer /^[a-zA-Z0-9]*$/
, но angular по-прежнему игнорировал ведущие/конечные пробелы. Как Кристиан упоминает в комментариях:
Angular будет обрезать модель ввода, что означает, что проверка не запускается для пробелов. Вы можете добавить
ng-trim="false"
на вход, чтобы исправить это.
Обратите внимание, что angular пытается защитить вас, по умолчанию тихо обрезая пробелы. В моем случае я хочу, чтобы пользователь знал, что конечные пробелы недопустимы.