The Best NgMask!

How To Use

  1. Add ngMask plugin after your AngularJS.

    <script src="angular.min.js"></script>
    <script src='ngMask.min.js'></script>

  2. Add ngMask module dependency to your app.

    angular.module('yourApp', ['ngMask']);

  3. Use the avaiable patterns to create your mask. Set the mask as input attribute.

    <input type='text' ng-model='maskModel' mask='39/19/9999' /> "/" isn't a pattern. It's considered a divisor. Every divisor is automatically written by ngMask. Check all available patterns here.
  4. Adjust your mask options.

    <input type='text' ng-model='maskModel ng-value='0/3/9' mask='3/9?' mask-repeat='2' mask-restrict='accept' mask-clean='true' mask-validate='false' mask-limit='false' /> Generated mask '3/9?3/9?'. Check all available options here.

Avaiable Patterns

You can make your mask using some patterns available. If you use a pattern not specified below to construct your mask, It'll be considered a divisor. A dividor is a character used to group semantic elements, for example: "/" in dates to separate days, months and years, "-" in SSN to separate area, group and serial numbers or "." in IPv4 to create 4 groups of 8 bits.

Common Patterns

  • '*' => /./ Any single character
  • 'w' => /\w/ Any word character (letter, number, underscore)
  • 'W' => /\W/ Any non-word character
  • 'd' => /\d/ Any digit
  • 'D' => /\D/ Any non-digit
  • 's' => /\s/ Any whitespace character
  • 'S' => /\S/ Any non-whitespace character
  • 'b' => /\b/ Any word boundary

Number Patterns

  • '9' => /[0-9]/ Valid numbers: 0,1,2,3,4,5,6,7,8,9
  • '8' => /[0-8]/ Valid numbers: 0,1,2,3,4,5,6,7,8
  • '7' => /[0-7]/ Valid numbers: 0,1,2,3,4,5,6,7
  • '6' => /[0-6]/ Valid numbers: 0,1,2,3,4,5,6
  • '5' => /[0-5]/ Valid numbers: 0,1,2,3,4,5
  • '4' => /[0-4]/ Valid numbers: 0,1,2,3,4
  • '3' => /[0-3]/ Valid numbers: 0,1,2,3
  • '2' => /[0-2]/ Valid numbers: 0,1,2
  • '1' => /[0-1]/ Valid numbers: 0,1
  • '0' => /[0]/ Valid numbers: 0

Extra Patterns

  • '?' => /?/ Optional character. It makes the previous pattern optional.
  • 'A' => /[A-Z]/ Any uppercase alphabet letter without accents
  • 'a' => /[a-z]/ Any lowercase alphabet letter without accents
  • 'Z' => /[A-ZÇÀÁÂÃÈÉÊẼÌÍÎĨÒÓÔÕÙÚÛŨ]/ Any uppercase alphabet letter with accents
  • 'z' => /[a-zçáàãâéèêẽíìĩîóòôõúùũüû]/ Any lowercase alphabet letter with accents
  • '@' => /[a-zA-Z]/ Any alphabet letter without accents
  • '#' => /[a-zA-ZçáàãâéèêẽíìĩîóòôõúùũüûÇÀÁÂÃÈÉÊẼÌÍÎĨÒÓÔÕÙÚÛŨ]/ Any alphabet letter with accents
  • '%' => /[0-9a-zA-zçáàãâéèêẽíìĩîóòôõúùũüûÇÀÁÂÃÈÉÊẼÌÍÎĨÒÓÔÕÙÚÛŨ]/ Any digit and alphabet letter with accents

Options

Examples

Date example


Model: {{date}}

Field Error: {{form.date.$error}}

Field Valid: {{form.date.$valid}}

<input type="text" name="date" mask="39/19/9999" ng-model="date">

Model: {{date1}}

Field Error: {{form.date1.$error}}

Field Valid: {{form.date1.$valid}}

<input type="text" name="date1" mask="39/19/9999" clean="true" ng-model="date1">

Model: {{date2}}

Field Error: {{form.date2.$error}}

Field Valid: {{form.date2.$valid}}

<input type="text" name="date2" mask="39/19/9999" clean="false" ng-model="date2">

Model: {{date4}}

Field Error: {{form.date4.$error}}

Field Valid: {{form.date4.$valid}}

<input type="text" name="date" mask="19/39/9999" restrict="reject" ng-model="date4">

Model: {{date5}}

Field Error: {{form.date5.$error}}

Field Valid: {{form.date5.$valid}}

<input type="text" name="date5" mask="19/39/9999" restrict="reject" clean="true" ng-model="date5">

Model: {{date6}}

Field Error: {{form.date6.$error}}

Field Valid: {{form.date6.$valid}}

<input type="text" name="date6" mask="19/39/9999" restrict="accept" clean="true" ng-model="date6">

Phone example


Model: {{phone}}

Field Error: {{form.phone.$error}}

Field Valid: {{form.phone.$valid}}

<input type="text" name="phone" mask="(999) 999-9999" clean="true" ng-model="phone">

Model: {{phone2}}

Field Error: {{form.phone2.$error}}

Field Valid: {{form.phone2.$valid}}

<input type="text" name="phone2" mask="(99) 9?9999-9999" ng-model="phone2">

Model: {{phone3}}

Field Error: {{form.phone3.$error}}

Field Valid: {{form.phone3.$valid}}

<input type="text" name="phone3" mask="+99 99 9?9999-9999" restrict="reject" ng-model="phone3">

String example


Model: {{name0}}

Field Error: {{form.name0.$error}}

Field Valid: {{form.name0.$valid}}

<input type="text" name="name0" mask="%" repeat="30" restrict="reject" ng-model="name0">

Model: {{name2}}

Field Error: {{form.name2.$error}}

Field Valid: {{form.name2.$valid}}

<input type="text" name="name2" mask="@" repeat="15" ng-model="name2">

Model: {{name3}}

Field Error: {{form.name3.$error}}

Field Valid: {{form.name3.$valid}}

<input type="text" name="name3" mask="w?s?" repeat="10" restrict="reject" validate="false" ng-model="name3">

IPv4 example


Model: {{ip}}

Field Error: {{form.ip.$error}}

Field Valid: {{form.ip.$valid}}

<input type="text" name="ip" mask="95?5?.95?5?.95?5?.95?5?" ng-model="ip">

Model: {{ip2}}

Field Error: {{form.ip2.$error}}

Field Valid: {{form.ip2.$valid}}

<input type="text" name="ip2" mask="95?5?" repeat="4" clean="true" ng-model="ip2">

Model: {{ip3}}

Field Error: {{form.ip3.$error}}

Field Valid: {{form.ip3.$valid}}

<input type="text" name="ip3" mask="255.255.255.255" ng-model="ip3">

CPF example


Model: {{cpf1}}

Field Error: {{form.cpf1.$error}}

<input type="text" name="cpf1" mask="999.999.999-99" ng-model="cpf1">

Model: {{cpf3}}

Field Error: {{form.cpf3.$error}}

<input type="text" name="cpf3" mask="999.999.999-99" clean="true" ng-model="cpf3">

Model: {{cpf2}}

Field Error: {{form.cpf2.$error}}

<input type="text" name="cpf2" mask="999.999.999-99" clean="false" ng-model="cpf2">

Numbers example


Model: {{optional}}

Field Error: {{form.optional.$error}}

Field Valid: {{form.optional.$valid}}

<input type="text" name="optional" mask="123?4?" restrict="reject" limit="false" ng-model="optional">

Model: {{repeat}}

Field Error: {{form.repeat.$error}}

Field Valid: {{form.repeat.$valid}}

<input type="text" name="repeat" mask="9" repeat="5" ng-model="repeat">

Model: {{dontrepeat}}

Field Error: {{form.dontrepeat.$error}}

Field Valid: {{form.dontrepeat.$valid}}

<input type="text" name="dontrepeat" mask="99999" ng-model="dontrepeat">

Default value example


Model: {{dateDefault}}

Field Error: {{form.dateDefault.$error}}

<input type="text" name="dateDefault" mask="39/19/9999" ng-value="30/09/1986" ng-model="dateDefault">

Model: {{cpfDefault}}

Field Error: {{form.cpfDefault.$error}}

<input type="text" name="cpfDefault" mask="999.999.999-99" clean="false" ng-value="a8799900105" ng-model="cpfDefault">

Model: {{numberDefault}}

Field Error: {{form.numberDefault.$error}}

<input type="text" name="numberDefault" mask="9" repeat="5" ng-value="12349" ng-model="numberDefault">


@candreoliveira - ngMask