quarta-feira, 8 de julho de 2009

Expressão Regular em Java Script:

Em ciência da computação, uma expressão regular (ou o estrangeirismo regex, abreviação do inglês regular expression) provê uma forma concisa e flexível de identificar cadeias de caracteres de interesse, como caracteres particulares, palavras ou padrões de caracteres. Expressões regulares são escritas numa linguagem formal que pode ser interpretada por um processador de expressão regular, um programa que ou serve um gerador de analisador sintático ou examina o texto e identifica partes que casam com a especificação dada. fonte:http://pt.wikipedia.org/wiki/Express%C3%A3o_regular.

Para se criar uma RegExp é necessário pelo menos possuir os conceitos básicos.
"( )" são usados para definir precedência ou escopo de operadores, "|" é usado para definir alternância, é o OR ou || nas linguagens de programação, quantificadores como ? * e +, outro símbolo importante são os cochetes [] que dentro deles possuem as variações como: [a-zA-Z] indica que pode variar de a até z e A até Z, um exemplo de | é: [a-z|0-9] que indica de a até z ou 0 até 9. quando se coloca {} significa quantos dígitos que será aplicada verificação naquela parte, exemplo [a-z]{2,6} - vai de a até z começando do dígito 2 (lembrando que começa do 0) até o dígito 6.

Um exemplo muito bom é a verificação de e-mail, para isso fiz um código em javaScript para ilustrar este exemplo, lembrando de colocar o campo no seu código html para realizar a verificação, neste caso usei também jQuery para tratar com elementos simples como evento de click e captura do elemento no input.

Um exemplo de código:

    /**
    * Description of JavaScript RegExp
    *
    * @author clovesjunior
    */

    $(document).ready( //atenção isto é jquery
    function(){
    $('#verificar_email').click(//atenção isto é jquery
    function(){
    testar_email();
    }
    );
    });
    function testar_email(){
    var email = new RegExp('\^((?:[.]|[_])|([0-9|a-z|.|_]{3,32}))+@(([a-z|0-9]{1,12})+.+(?:[a-z]{2}))\$');
    console.log($('#email').val());//atenção $('#email').val() é jquery
    if(email.test($('#email').val())){
    alert('email Válido');
    }else{
    alert('email Inválido');
    }
    }



Como este código é somente para demonstração, não foram feitas verificações avançadas e nem melhorias, que podem ser feitas facilmente,
e sem contar que este código pode ser reduzido a poucos dígitos, como por exemplo ao invés de verificar[0-9|a-z|.|_] pode ser /d, ok.
Espero que este artigo possa ajudá-lo!

Conversão de Data em PHP


Para fazer uma conversão automática, é importante saber quais os parâmetros passados, assim fazer a conversão tanto no padrão americano yyyy-mm-dd ou no padrão brasileiro dd/mm/yyyy.
Eis a seguinte Classe que faz esta conversão:

    /**
    * Description of Ferramenta
    *
    * @author clovesjunior
    */
    class Ferramenta {
    /**
    * Método Estático para Conversão de Data Padrão: (Americano - Brasileiro)
    * ou (Brasileiro - Americano) somente com o tipo de data que for inserido.
    * @param string $data_s
    * @return strin $data
    */
    public static function converteData($data_s){
    $data = explode('/',$data_s);
    if($data[0]!=$data_s){
    $date=$data[2].'-'.$data[1].'-'.$data[0];
    if(!eregi("^[0-9]{4}-([0-1]{1})([0-9]{1})-([0-3]{1})([0-9]{1})$", $date)){
    throw new Exception("Data Inválida!");
    }
    }else{
    $data = explode('-',$data_s);
    if(is_array($data)){
    $date=$data[2].'/'.$data[1].'/'.$data[0];
    if(!eregi("^([0-3]{1})([0-9]{1})/([0-1]{1})([0-9]{1})/[0-9]{4}$", $date)){
    throw new Exception("Data Inválida!");
    }
    }
    }
    return $date;
    }

    }

para efetuar a conversão é somente chamar o método estático da classe Ferramenta, da seguinte forma:

try{
echo Ferramenta::converteData('12/33/2000');
}catch(Exception $erro){
echo $erro;
}

Lógico que deve ser feitas algumas melhorias, assim para fazer a verificação de dias, meses e anos válidos, etc.
Espero que tenham gostado da implementação!