Regular Expressions Cookbook, 2nd Edition by Jan Goyvaerts, Steven Levithan

Limit input to alphanumeric characters in any language

Esta expressão regular limita o input a letras e números de qualquer idioma ou script:

^+$

Opções Regex: None

Regex flavors: .NET, Java, XRegExp, PCRE, Perl, Ruby 1.9

Esta utiliza uma classe de caracteres que inclui abreviaturas para todos os pontos de código nas categorias Unicode Letter, Mark, e Decimal Number, que segue a definição oficial Unicode de um caractere alfanumérico. A categoria Mark está incluída, uma vez que as marcas são necessárias para palavras de vários idiomas. Marcas são pontos de código que se destinam a ser combinados com outros caracteres (por exemplo, para formar uma versão acentuada de uma letra base).

Felizmente, as categorias Unicode não são suportadas por todos os sabores de expressão regular abrangidos por este livro. Especificamente, este regex não funcionará com JavaScript (a menos que utilize XRegExp), Python ou o sabor nativo do Ruby 1.8. Usando este regex com PCRE requer que o PCRE seja compilado com suporte a UTF-8, e as categorias Unicode podem ser usadas com as funções preg do PHP (que dependem do PCRE) se a opção /u for anexada ao regex.

O seguinte regex mostra uma alternativa para o Python:

^+$

Opções Regex: Unicode:

Regex sabores: Python

Aqui, nós trabalhamos em torno da falta de categorias Unicode em Python usando a bandeira UNICODE ou U ao criar a expressão regular. Isto muda o significado de algumas fichas regex, fazendo-as usar a tabela de caracteres Unicode. O ‘\w‘ então nos leva a maior parte do caminho para uma solução, já que combina caracteres alfanuméricos e o sublinhado. Usando seu ‘\W‘ inverso em uma classe de caracteres negados, podemos remover o underscore deste conjunto. Negativos duplos como este são ocasionalmente bastante úteis em expressões regulares, apesar de poderem ser difíceis de entender. Python 3.x inclui caracteres não-ASCII em caracteres curtos como ‘\w‘ por padrão, e portanto não requer a bandeira UNICODE.

.

Deixe uma resposta

O seu endereço de email não será publicado.