web-dev-qa-db-ja.com

空白や特殊文字を許可しないようにngパターンを書く

angular ng-patternを取得して、ユーザー名に空白や特殊文字がないことを確認しようとしています。空白または特殊文字を入力すると、次のフォームはfalseを返します。 az、Az、または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

21
Craig Morgan

次のパターンを試してください。

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

これにより、英数字のみが許可されます。

41
Ibrahim Najjar

私が探していた特定の答えを明らかにするために、スニファー/^[a-zA-Z0-9]*$/によって提案されたパターンはすでにありましたが、angularはまだ先頭/末尾の空白を無視するように見えました。As クリスチャンはコメントに言及しています

Angularは入力モデルをトリミングします。つまり、検証はスペースに対してトリガーされません。これを修正するには、入力にng-trim="false"を追加できます。

Angularは、デフォルトで空白を静かにトリミングすることであなたを保護しようとしていることに注意してください。私の場合、末尾の空白が無効であることをユーザーに知らせてください。

14
Johann