Você está na página 1de 3

Nome: Érik Vinicius Sousa Silva – Aluno PcD

RGA: 201811310004

Usando RegEx para máscaras em JAVASCRIPT


A expressões regulares (RegEx) em Javascript são expressões regulares e são absolutamente
maravilhosas. E, uma das melhores coisas sobre as expressões regulares Javascript (em
oposição ao RegEx em outras linguagens) é que você pode passar as correspondências de
grupos individuais para uma chamada de função:
strValue.replace(
new RegExp( "([0-9]+)", "gi" ),

function( $1 ){

return( "digit" );
});

Utilizando biblioteca de funções úteis, como corte de strings e formatação de data. A


formatação de data e hora, como você deve saber do ColdFusion, usa um argumento de
máscara para definir como a data deve ser formatada.

Existem muitas combinações diferentes de máscaras disponíveis para o usuário. Acontece que,
usando essa flexibilidade de expressão regular, isso torna a aplicação de uma máscara
extremamente fácil.

A primeira coisa dentro da função formatDate () é definir os valores para cada parte da
máscara potencial:
"d": this.getDate(),
"dd": (this.getDate().toString().length == 1) ? ("0" +
this.getDate()) : this.getDate(),
"ddd": [ "Sun","Mon","Tue","Wed","Thr","Fri","Sat" ]
[ this.getDay() ],
"dddd":
[ "Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturda
y" ][ this.getDay() ],
"m": this.getMonth(),
"mm": (this.getMonth().toString().length == 1) ? ("0" +
this.getMonth()) : this.getMonth(),
"mmm":
[ "Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","D
ec" ][ this.getMonth() + 1 ],
"mmmm":
[ "January","February","March","April","May","June","July","August","S
eptember","October","November","December" ][ this.getMonth() + 1 ],
"yy": this.getYear().toString().substring( 1, 3 ),
"yyyy": this.getFullYear()
}
ObjPart, é uma parte possível da máscara de data. Agora, supondo que o argumento "strMask"
passado mantenha o formato de data desejado pelo usuário, poderíamos aplicar a máscara à
data usando a expressão regular:
strMask.replace(
new RegExp( "(d{1,4}|m{1,4}|y{4}|y{2})", "gi" ),
function( $1 ){
return( objParts[ $1 ] );
})
);
A expressão regular (d {1,4} | m {1,4} | y {4} | y {2}) simplesmente corresponderá a
qualquer parte possível das opções de máscara de data disponíveis. Cada parte
correspondente é então passada para a função que definimos como o segundo argumento do
método replace (). Esta função simplesmente retorna o valor do objeto objParts [] usando o
grupo correspondido como a chave.

Date.prototype.formatDate = function( strMask ){


var objParts = {
"d": this.getDate(),
"dd": (this.getDate().toString().length == 1) ? ("0" +
this.getDate()) : this.getDate(),
"ddd": [ "Sun","Mon","Tue","Wed","Thr","Fri","Sat" ]
[ this.getDay() ],
"dddd":
[ "Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday" ]
[ this.getDay() ],
"m": this.getMonth(),
"mm": (this.getMonth().toString().length == 1) ? ("0" +
this.getMonth()) : this.getMonth(),
"mmm":
[ "Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec" ]
[ this.getMonth() + 1 ],
"mmmm":
[ "January","February","March","April","May","June","July","August","September
","October","November","December" ][ this.getMonth() + 1 ],
"yy": this.getYear().toString().substring( 1, 3 ),
"yyyy": this.getFullYear()
}
switch ( strMask ){
case "short":
return( objParts[ "m" ] + "/" + objParts[ "d" ] + "/"
+ objParts[ "yyyy" ] );
break;
case "medium":
return( objParts[ "mmm" ] + " " + objParts[ "d" ] +
", " + objParts[ "yyyy" ] );
break;
case "long":
return( objParts[ "mmmm" ] + " " + objParts[ "d" ] +
", " + objParts[ "yyyy" ] );
break;
case "full":
return( objParts[ "dddd" ] + ", " +
objParts[ "mmmm" ] + " " + objParts[ "d" ] + ", " + objParts[ "yyyy" ] );
break;
default:
return(
strMask.replace(
new RegExp( "(d{1,4}|m{1,4}|y{4}|
y{2})", "gi" ),
function( $1 ){
return( objParts[ $1 ] );
})
);
break;
}
}
Existem vários loops WHILE. E dentro de cada um desses loops while, eles estão obtendo
tokens, realizando lógica, verificando os valores nulos.

Você também pode gostar