telefonos - regex para numero de telefono
Regex para validación de números móviles (2)
Prueba este regex:
^(/+?/d{1,4}[/s-])?(?!0+/s+,?$)/d{10}/s*,?$
La explicación de la expresión regular que utiliza YAPE de Perl es la siguiente:
NODE EXPLANATION
----------------------------------------------------------------------
(?-imsx: group, but do not capture (case-sensitive)
(with ^ and $ matching normally) (with . not
matching /n) (matching whitespace and #
normally):
----------------------------------------------------------------------
^ the beginning of the string
----------------------------------------------------------------------
( group and capture to /1 (optional
(matching the most amount possible)):
----------------------------------------------------------------------
/+? ''+'' (optional (matching the most amount
possible))
----------------------------------------------------------------------
/d{1,4} digits (0-9) (between 1 and 4 times
(matching the most amount possible))
----------------------------------------------------------------------
[/s-] any character of: whitespace (/n, /r,
/t, /f, and " "), ''-''
----------------------------------------------------------------------
)? end of /1 (NOTE: because you are using a
quantifier on this capture, only the LAST
repetition of the captured pattern will be
stored in /1)
----------------------------------------------------------------------
(?! look ahead to see if there is not:
----------------------------------------------------------------------
0+ ''0'' (1 or more times (matching the most
amount possible))
----------------------------------------------------------------------
/s+ whitespace (/n, /r, /t, /f, and " ") (1
or more times (matching the most amount
possible))
----------------------------------------------------------------------
,? '','' (optional (matching the most amount
possible))
----------------------------------------------------------------------
$ before an optional /n, and the end of
the string
----------------------------------------------------------------------
) end of look-ahead
----------------------------------------------------------------------
/d{10} digits (0-9) (10 times)
----------------------------------------------------------------------
/s* whitespace (/n, /r, /t, /f, and " ") (0 or
more times (matching the most amount
possible))
----------------------------------------------------------------------
,? '','' (optional (matching the most amount
possible))
----------------------------------------------------------------------
$ before an optional /n, and the end of the
string
----------------------------------------------------------------------
) end of grouping
----------------------------------------------------------------------
Quiero una expresión regular para la validación de números móviles. El patrón de expresión regular debe ser tal que debe aceptar +
solo al principio y el espacio (o -
) se debe permitir solo después del código de país (solo una vez). Solo se debe permitir el número de 10 dígitos después del código de país. El código de país debe ser opcional. Si el código de país no existe, debe aceptar solo un número de 10 dígitos. El impuesto debe evitar cualquier número no válido como (por ejemplo: +91 0000000000
o 0000000000
).
La expresión regular debe aceptar números como
+1 8087339090,
+91 8087339090,
+912 8087339090,
8087339090 ,
08087339090 ,
+1-8087339090,
+91-8087339090,
+912-8087339090,
+918087677876(Country code(2 digits) + 10 digits Mobile Number),
+9108087735454(Country code(3 digits) + 10 digits Mobile Number)
The regex should not accept numbers like
++51 874645(double successive +),
+71 84364356(double successive spaces),
+91 808 75 74 678(not more than one space),
+91 808-75-74-678(not more than one -),
+91-846363,
80873(number less than 10 digit),
8087339090456(number greater than 10 digit),
0000000000(all zeros),
+91 0000000(all zeros with country code)
Satisface todos tus requisitos si utilizas el truco que se explica a continuación.
Regex: /^(/+/d{1,3}[- ]?)?/d{10}$/
-
^
comienzo de linea - A
+
seguido de/d+
seguido de unao
-
que son opcionales. - El punto entero dos es opcional.
- Búsqueda negativa para asegurarse de que
0
s no sigan. - Match
/d+
10 veces. - Fin de linea.
DEMO agregó m
ultilina bandera en la demostración para verificar todos los casos
PS Realmente necesita especificar qué idioma usa para usar una condición if
como la siguiente:
// true if above regex is satisfied and (&&) it does not (`!`) match `0`s `5` or more times
if(number.match(/^(/+/d{1,3}[- ]?)?/d{10}$/) && ! (number.match(/0{5,}/)) )