Encontrei esse código em algum site e funciona perfeitamente.
Valida se o número de telefone está em um destes formatos: (123) 456-7890 ou 123-456-7890
O problema é que meu cliente (não sei por que, talvez coisas do cliente) deseja adicionar outro formato, os dez números consecutivos, algo como isto: 1234567890 .
Eu estou usando essa expressão regular,
/^(\()?\d{3}(\))?(-|\s)?\d{3}(-|\s)\d{4}$/
Como posso acrescentar que também valida o outro formato? Eu não sou bom com expressões regulares.
javascript
regex
Castro Roy
fonte
fonte
Respostas:
Primeiro, seu validador de formato é obviamente apropriado apenas para números NANP (código do país +1). Seu aplicativo será usado por alguém com um número de telefone de fora da América do Norte? Nesse caso, você não deseja impedir que essas pessoas insiram um número [internacional] perfeitamente válido.
Em segundo lugar, sua validação está incorreta. Os números NANP assumem o formato
NXX NXX XXXX
ondeN
está um dígito 2-9 eX
é um dígito 0-9. Além disso, os códigos de área e trocas não podem assumir o formatoN11
(terminar com dois) para evitar confusão com serviços especiais, exceto os números em um código de área não geográfico (800, 888, 877, 866, 855, 900) podem ter umaN11
troca.Portanto, seu regex passará o número (123) 123 4566, mesmo que esse não seja um número de telefone válido. Você pode corrigir isso substituindo
\d{3}
por[2-9]{1}\d{2}
.Por fim, sinto que você está validando a entrada do usuário em um navegador da web. Lembre-se de que a validação do lado do cliente é apenas uma conveniência que você fornece ao usuário ; você ainda precisa validar todas as entradas (novamente) no servidor.
TL; DR não usa uma expressão regular para validar dados complexos do mundo real, como números de telefone ou URLs . Use uma biblioteca especializada .
fonte
Minha regex de escolha é:
Formatos válidos:
(123) 456-7890
(123)456-7890
123-456-7890
123.456.7890
1234567890
+31636363634
075-63546725
fonte
i
torna a expressão de maiúsculas e minúsculas em
executa pesquisas de multi-linha^
no início e no$
final ele pode encontrar números de telefone no meio de cordas bemSe você estiver procurando por 10 e apenas 10 dígitos, ignore tudo, exceto os dígitos,
fonte
return (value.match(/\d/g) || []).length == 10
ou o muito mais simples (mas igualmente falho):return value.replace(/\D/g,'').length == 10
./\D/gi.test(value)
. Tudo isso não é um dígito, incluindo espaços em branco, traços, etc ...O que eu faria é ignorar o formato e validar o conteúdo numérico:
fonte
Essa é uma opção muito flexível e prefiro mantê-la dessa maneira, principalmente em formulários de registro em que os usuários precisam adicionar seu número de telefone. Geralmente, os usuários têm problemas com formulários que aplicam regras estritas de formatação. Prefiro que o usuário preencha o número e o formato no visor ou antes de salvá-lo no banco de dados. http://regexr.com/3c53v
fonte
+41 (79) 123 45 67
(Suiça):/^[+]?[\s./0-9]*[(]?[0-9]{1,4}[)]?[-\s./0-9]*$/g
O seguinte REGEX validará qualquer um destes formatos:
(123) 456-7890
123-456-7890
123.456.7890
1234567890
fonte
.
ou ele corresponderá a um caractere arbitrário, quebrando seu regex.Eu sugeriria usar algo mais claro (especialmente pensando em quem terá que manter o código) ... o que dizer:
onde o regexp é construído a partir de um modelo claro? Adicionar um novo seria um acéfalo e talvez até o próprio cliente pudesse fazer isso em uma página de "opções".
fonte
Onde str pode estar em qualquer um destes formatos: 555-555-5555 (555)555-5555 (555) 555-5555 555 555 5555 5555555555 1 555 555 5555
fonte
Experimente este - inclui validação para formatos internacionais também.
/^[+]?(1\-|1\s|1|\d{3}\-|\d{3}\s|)?((\(\d{3}\))|\d{3})(\-|\s)?(\d{3})(\-|\s)?(\d{4})$/g
Este regex valida o seguinte formato:
fonte
/^\+?1?\s*?\(?\d{3}(?:\)|[-|\s])?\s*?\d{3}[-|\s]?\d{4}$/
Embora este post seja antigo, mas quero deixar minha contribuição. estes são aceitos: 5555555555 555-555-5555 (555)555-5555 1 (555) 555-5555 1 555 555 5555 1 555-555-5555 1 (555) 555-5555
estes não são aceitos:
555-5555 -> para aceitar esse uso:
^\+?1?\s*?\(?(\d{3})?(?:\)|[-|\s])?\s*?\d{3}[-|\s]?\d{4}$
5555555 -> para aceitar esse uso:
^\+?1?\s*?\(?(\d{3})?(?:\)|[-|\s])?\s*?\d{3}[-|\s]?\d{4}$
1 555) 555-5555 123 ** & !! asdf # 55555555 (6505552368) 2 (757) 622-7382 0 (757) 622-7382 -1 (757) 622-7382 2 757 622-7382 10 (757) 622 -7382 27576227382 (275) 76227382 2 (757) 6227382 2 (757) 622-7382 (555) 5 (55?) - 5555
este é o código que eu usei:
fonte
Isso funcionará:
O
?
caractere significa que o grupo anterior deve corresponder a zero ou uma vez. O grupo(-|\s)
corresponderá a um-
ou a um|
personagem. Adicionar?
após a segunda ocorrência deste grupo ao seu regex permite combinar uma sequência de 10 dígitos consecutivos.fonte
realmente simples
fonte
As respostas de todos são ótimas, mas aqui está uma que eu acho que é um pouco mais abrangente ...
Isso foi escrito para o uso de correspondência javascript de um único número em uma única linha:
Se você deseja corresponder aos limites das palavras, basta alterar os ^ e $ para \ b
Congratulo-me com todas as sugestões, correções ou críticas a esta solução. Até onde eu sei, isso corresponde ao formato NANP (para números dos EUA - eu não validei outros países da América do Norte ao criar isso), evita erros 911 (não pode estar no código de área ou código de região), elimina apenas os números 555 que são realmente inválidos (código de região 555 seguido por 01xx onde x = qualquer número).
fonte
/^(()?\d{3}())?(-|\s)?\d{3}(-|\s)?\d{4}$/
O
?
caractere significa que o grupo anterior deve corresponder a zero ou uma vez. O grupo(-|\s)
corresponderá a um-
ou a um|
personagem.fonte
Eu tenho que concordar que validar números de telefone é uma tarefa difícil. Quanto a esse problema específico, eu alteraria o regex de
para
como o único mais elemento que se torna desnecessário é o último traço / espaço.
fonte
Se você estiver usando a tag de entrada, esse código o ajudará. Eu escrevo esse código sozinho e acho que essa é uma maneira muito boa de usar na entrada. mas você pode alterá-lo usando seu formato. Isso ajudará o usuário a corrigir seu formato na tag de entrada.
fonte
Só queria adicionar uma solução especificamente para selecionar números de telefone não locais (tipos 800 e 900).
fonte
Este registro é adequado para números de telefone internacionais e vários formatos de números de celular.
Aqui está a expressão regular: / ^ (+ {1} \ d {2,3} \ s? [(] {1} \ d {1,3} [)] {1} \ s? \ D + | + \ d {2,3} \ s {1} \ d + | \ d +) {1} [\ s | -]? \ d + ([\ s | -]? \ d +) {1,2} $ /
Aqui está a função JavaScript
Isso valida os seguintes formatos:
+44 07988-825 465 (com qualquer combinação de hífens no lugar do espaço, exceto que apenas um espaço deve seguir o +44)
+44 (0) 7988-825 465 (com qualquer combinação de hífens no lugar de espaços, exceto que nenhum hífen pode existir diretamente antes ou depois do (0) e o espaço antes ou depois do (0) não precisa existir)
123 456-789 0123 (com qualquer combinação de hífens no lugar dos espaços)
123-123 123 (com qualquer combinação de hífens no lugar dos espaços)
123 123456 (O espaço pode ser substituído por um hífen)
1234567890
Não podem existir espaços duplos ou hífens duplos para todos os formatos.
fonte
Validar número de telefone + retornar dados formatados
fonte
tente isso
formatos válidos
https://regex101.com/r/QXAhGV/1
fonte
{1}
é inútil,{0,}
é melhor escrito*
. Por que usar todos esses grupos de captura? Eles atrasam o processo.Esta função funcionou bem para nós:
fonte
Expressão regular simples:
/\b\d{3}[-.]?\d{3}[-.]?\d{4}\b/g
Confira o formato, espero que funcione:
444-555-1234
f: 246.555.8888
m: 1235554567
fonte
Isso validará qualquer número de telefone de formato variável:
\\(?\d{3}\\)?
encontra 3 dígitos entre parênteses ou não.([\-\s\.])?
encontra algum desses caracteres separadores ou não\d{3}
encontra 3 dígitos\1
usa o primeiro separador correspondente - isso garante que os separadores sejam os mesmos. Portanto, (000) 999-5555 não será validado aqui porque existe um separador de espaço e traço; portanto, remova o "\ 1" e substitua pelo sub-padrão do separador (isso também validará formatos fora do padrão). No entanto, você deve, no entanto, sugerir o formato para a entrada do usuário.\d{4}
encontra 4 dígitosValida:
BTW isto é para JavaScript, portanto, para escapa duas vezes.
fonte
Tente esta função js. Retorna TRUE se ele corresponde e false se ele falhar Ref
fonte
Apenas ignore tudo, menos dígitos.
Aqui está o que eu uso:
fonte
tente isso
formatos válidos:
fonte