Logical Operators

Logical Operators
Example Name Result
$a and $b And TRUE if both $a and $b are TRUE.
$a or $b Or TRUE if either $a or $b is TRUE.
$a xor $b Xor TRUE if either $a or $b is TRUE, but not both.
! $a Not TRUE if $a is not TRUE.
$a && $b And TRUE if both $a and $b are TRUE.
$a || $b Or TRUE if either $a or $b is TRUE.

The reason for the two different variations of “and” and “or” operators is that they operate at different precedences.

Example #1 Logical operators illustrated

<?php

// ——————–
// foo() will never get called as those operators are short-circuit

$a = (false && foo());
$b = (true  || foo());
$c = (false and foo());
$d = (true  or  foo());

// ——————–
// ”||” has a greater precedence than ”or”

// The result of the expression (false || true) is assigned to $e
// Acts like: ($e = (false || true))
$e = false || true;

// The constant false is assigned to $f and then true is ignored
// Acts like: (($f = false) or true)
$f = false or true;

var_dump($e, $f);

// ——————–
// ”&&” has a greater precedence than ”and”

// The result of the expression (true && false) is assigned to $g
// Acts like: ($g = (true && false))
$g = true && false;

// The constant true is assigned to $h and then false is ignored
// Acts like: (($h = true) and false)
$h = true and false;

var_dump($g, $h);
?>

The above example will output something similar to:

bool(true)
bool(false)
bool(false)
bool(true)

Tipos de datos en PHP

El PHP soporta distintos tipos de datos, que no los tiene que impostar el programador, sino que son asumidos directamente por el motor, siempre que el programador no cambie el tipo (utilizando la función settype() ).

Los datos pueden ser:

  • Integer;
  • Floating Point number;
  • String;
  • Array;
  • Object.Vamos a verlos de uno en uno.

    Integer

    Los Integers, o enteros, pueden tener distintos valores númericos que se expresan con diferentes anotaciones.

    $a = 18; # decimal
    $a = -18; # decimal negativo
    $a = 022; # anotación octal; es igual a 18 decimales
    $a = 0×12; # anotación exadecimal, es igual a 18 decimales

    Probablmente, por lo menos para empezar, tendréis que utilizar sobre todo los números decimales, sin embargo hay que saber que el lenguaje admite incluso otras anotaciones ademas de la decimal.

    Floating point number

    Este tipo de datos son los números con la coma móvil, por ejemplo, 9.876. La sintaxis para utilizarlos es bastante simple:

    $a = 9.876;
    $a = 9.87e6;

    Strings

    Con respecto a las strings hay mucho más que decir porque son tipos de datos diferentes. La sintaxis de base es:

    $string = “Yo soy una cadena”;

    Si se utilizan las comillas (“”), el contenido de la cadena se expande (o, técnicamente, “interpolado”) , como en el ejemplo a continuación:

    $num = 10;
    $string = “El número es $num”;

    Esto visualizará “El número es 10″.
    Sin embargo, como con todos los lenguajes, también con los PHP tenemos caracteres especiales que tienen que estar anticipados por un símbolo, por ejemplo:

    $num = 10;
    $string = “El número es “$num”";

    Los que piensen que el output de este código es ‘El número es “10″‘ se equivocan. A parte de que, así como está escrito, el script daría un error de redacción, las comillas son caracteres especiales, sin embargo, es posible utilizarlas. Por lo tanto la sintaxis correcta para el mando es:

    $num = 10;
    $string = “El número es \”$num\”";

    Otros caracteres especiales son:

    \n -> newline
    \r -> carriage return
    \t -> tabulación
    \\ -> backslash
    \$ -> símbolo del dólar

    La alternativa a los caracteres de escape, cuando no haya contenidos que extender, son los ápices (”); por ejemplo:

    $string = ‘$ es el símbol del dólar’;

    visualizará precisamente los que están en los ápices. Cuidado con un error muy común:

    $num = 10;
    $string = ‘El número es $num’;

    no visualizará “El número es 10″ sino “El número es $num”. Por lo tanto, podemos decir que con los ápices el contenido de la cadena se se hace una transmisión literal, tal como está escrito entre las ápices

    Array

    El PHP soporta tanto los array escalares como los array asociativos.

    En PHP un array de valores se puede crear explícitamente definiendo los elementos, o su creación puede hacerse introduciendo valores en el array. Por ejemplo:

    $a = (“abc”, “def”, “ghi”);

    crea el array definiendo explícitamente los elementos del array, al contrario de lo que ocurre en el ejemplo siguiente:

    $a[0] = “abc”;
    $a[1] = “def”;
    $a[2] = “ghi”;

    En este caso, el array se crea con tres elementos. Recordemos que el primer elemento de un array se identifica con el número “0″. Si, por ejemplo, la longitud de una array es “5″, éste incluye seis elementos. El elemento que tiene el índice “0″ es el primero del array.
    Si, en cambio, para añadir elementos a un array (supongamos que nos referimos al que hemos creado arriba) se utilizan los corchetes vacíos y los datos se ajustan al array. Por ejemplo:

    $a[] = “lmn”;
    $a[] = “opq”;

    En este caso caso, el array se alarga 2 elementos y resulta ser:

    $a[0] = “abc”;
    $a[1] = “def”;
    $a[2] = “ghi”;
    $a[3] = “lmn”;
    $a[4] = “opq”;

    Este ejemplo es mucho más útil cuando queremos ajustar los elementos al array sin acudir a funciones específicas y sin tener que leer el número de los elementos que están en el array. Todo se ajustará automáticamente y correctamente.

    Los array asociativos se basan, en cambio, en parejas “name-value” y un ejemplo podría ser:

    $a = array(
    “nombre” => “Mario”,
    “apellido” => “Rossi”,
    “email” => “mario@rossi.com”,
    );

    Es interesante la posibilidad que tiene la función array de introducir las entries, como en el ejemplo que sigue:

    $a = array(
    “primero” => array(
    “nombre” => “Mario”,
    “apellido” => “Rossi”,
    “email” => “mario@rossi.com”,
    ),
    “segundo” => array(
    “nombre” => “Marco”,
    “apellido” => “Verdi”,
    “email” => “mario@verdi.com”,
    )
    );

    Ejecutar en este array una instrucción del tipo:

    visualizará “mario@verdi.com”

    Objects

    En PHP se pueden utilizar también los objetos. Para empezar vamos a ver un ejemplo:

    class visualiza {
    function ejecutar_visualiza () {
    eco “Visualiza un mensaje”;
    }
    }

    $obj=new visualiza;
    $obj->ejecutar_visualiza();

    En primer lugar definimos la clase “visualiza”, que incluye la función “ejecutar_visualiza” que quiere decir que visualiza simplemente un mensaje en la pantalla.
    Con la declaración “new” inicializamos el objeto “$obj” e invocamos la función visualizar con el operador -> en $obj.
    Como podéis ver, utilizar los objetos no es nada difícil aunque, para describirlos más en detalle, serían neceserario más explicaciones.

    Operadores

    Los operadores que se pueden utilizar con PHP son parecidos a los que se utilizan con otros lenguajes de programación. Para nuestra comodidad, los vamos a dividir en distintas “familias”: los operadores aritméticos, los operadores de asignación y todos los demás.

    Operadores aritméticos

    Los operadores aritméticos son los más simples y son:

    $a + $b -> sumar
    $a – $b -> restar
    $a * $b -> multiplicar
    $a / $b -> dividir
    $a % $b -> resto

    Fijémonos un momento en los últimas dos:

    * El resultado de la división no se aproxima al entero que está más cerca sino que da todo el número. El número de los caracteres después del punto se define en el archivo php3.ini en la línea:

    precision = 14

    Por lo tanto, saldrán sólo 14 números después de la coma, siempre que los haya, como en el ejemplo:

    $a = 12;
    $b = 5;
    $c = $a / $b;
    echo $c;

    el resultado es 2.4 y se visualizará precisamente como 2.4, no como 2.40000000000000. Por lo tanto, los 14 decimales se visualizan sólo si existen y no indiscriminadamente como ceros inútiles.

    * el resto se da por sí solo, sin el resultado de la división misma. Si en el ejemplo anterior hubieramos utilizado “%” en vez de “/”, el resultado habría sido “2″

    Asignación

    A menudo, desgraciadamente, los operadores de asignación se confunden con el operador de identidad. El operador “=” tiene un significado que no hay que confundir con el de “==”.
    El operdaor de asignación es el símbolo igual a (=) que da a una variable un valor, por ejemplo

    $a = 2;

    asigna a “$a” el valor “2″.
    El error que se hace a menudo es escribir algo como:

    if ($a=2) {
    do_something;
    }

    que, si lo leen ojos inexpertos, podría parecer una expresión para decir que si $a es IGUAL a 2 hay que ejecutar el código que está entre las llaves. Pues bien, no es tan grave: si hubieramos querido escribir lo que acabamos de decir, hubiéramos tenido que utilizar:

    if ($a == 2) {
    do_something;
    }
    Otros operadores

    Los operadores que el PHP nos pone a disposición son muchos y veremos en está página los más importantes que hasta ahora no hemos tenido la posibilidad de analizar. En particular, hablaremos de los valores booleanos, los matemáticos y los de incremento-decremento:

    $a & $b
    operador “And” ($a e $b);

    $a && $b
    como arriba, pero con una procedencia más alta;

    $a | $b
    operador “Or” ($a o $b);

    $a || $b
    como arriba, pero con una procedencia más alta;

    $a ^ $b
    operador “Xor” ($a o $b pero con ambos);

    !$a
    operador “Not” (verdadero si $a no es verdadera);

    $a == $b
    operador de igualdad, verdadero si $a tiene el mismo valor que $b;

    $a != $b
    lo opuesto de lo de arriba;

    $a < $b;
    $a es menor de $b;

    $a <= $b
    $a es menor o igual a $b;

    $a > $b
    $a mayor que $b;

    $a >= $b
    $a es mayor o igual a $b;

    $a ? $b : $c
    éste, se utiliza más con las expresiones que con las variables, evalúa $b si $a es verdadera, y evalúa $c si $a es falsa;

    ++$a
    incrementa de uno $a y la devuelve;

    $a++ devuelve $a y la incrementa de uno

    –$a
    $a–
    como los dos anteriores, pero se decrementa el valor;

    Estructuras de control

    No pueden faltar en un lenguaje de programación las estructuras de control que permiten que el programador ejecute unas acciones en el programa cuando se dan (o no se dan) determinadas condiciones.

    IF
    If permite ejecutar un bloque de noticias si se da (o no se da) una determinada condición. Su sintaxis es:

    if (condición)
    statement

    Por ejemplo, queremos que un script nos indique si dos variables son iguales:

    $a = 2;
    $b = 2;
    if ($a == $b) {
    eco “\$a es igual a \$b y valen $a.\n”;
    }

    If se puede utilizar también de forma diferente de la que acabamos de explicar. Aquí hay un ejemplo:


    $a es igual a $b.

    que hace lo mismo que la de arriba.

    “if” se puede utilizar incluso entre llaves, utilizando “endif” cuando se quiera terminar el bloque “if”; por ejemplo:

    if ($a == $b)
    eco “\$a es igual a \$b y valen $a.\n”;
    endif;

    Librerías para Generar PDF con PHP

    Estas son alguna librerías con las que podemos generar archivos pdf, bien personalizados , mediante código php..

    FPDF: es una de las mas completas y usadas, Web de FPDF, Tutoriales de FPDF, Descargar FPDF

    TCPDF: esta hecha para php4 y 5, es opensource, Web de TCPDF, Tutoriales de TCPDF, Descargar TCPDF

    R&OS: permite tener un módulo para generar pdf en php, Web de R&OS, Descargar R&OS

    Redondear decimales en PHP

    Entre las funciones matemáticas de PHP se encuentra una que nos permite redondear un float (número en coma flotante o número con decimales) al valor entero más próximo. Se trata de la función round(). Para explicar su uso, lo mejor es verlo con un par de ejemplos:

    round(0.6) devolvería el valor entero 1.
    round(7.3) devolvería el valor entero 7.

    Pero en muchas ocasiones vamos a necesitar redondear un número en coma flotante de manera que conservemos algunos decimales. Por ejemplo, si estamos haciendo operaciones con euros o dólares, lo lógico es que conservemos dos decimales en el redondeo. Por extraño que parezca, PHP no incluye una función de redondeo que permita redondear conservando decimales y es por ello que vamos a comentar en este artículo una manera de conseguirlo.

    Redondeo con dos decimales

    Vamos a utilizar un pequeño truco para redondear con dos decimales, ayudándonos de la función round() de PHP. Se trata de hacer esta sencilla operación matemática.

    Dado un valor, primero vamos a multiplicarlo por 100, lo vamos a redondear y finalmente, el resultado lo vamos a dividir otra vez por 100. El caso, en un ejemplo, es este:

    Para el valor 2.7931. Primero lo multiplicamos por 100. Tenemos el valor 279.31. Ahora hacemos el redondeo, puesto que los 0.31 queremos deshacernos de ellos. Haríamos un round(279.31) que devuelve como resultado 279. Por último, a este valor lo dividimos por 100, para recuperar los decimales, lo que nos da 2.79, que es el valor que deseábamos obtener.

    La fórmula que sacamos sería la siguiente:

    round(valor_float * 100) / 100

    Si queremos, podemos utilizar una función como esta para el redondeo hasta obtener dos cifras decimales:

    function redondear_dos_decimal($valor) {
    $float_redondeado=round($valor * 100) / 100;
    return $float_redondeado;
    }

    Para un juego de valores como este:

    redondear_dos_decimal(3.56666)
    redondear_dos_decimal(3.008)
    redondear_dos_decimal(3.66)
    redondear_dos_decimal(3.199)
    redondear_dos_decimal(3.9999)

    Nos daría el siguiente resultado:

    3.57
    3.01
    3.66
    3.2
    4

    Redondear para un número de decimales cualquiera

    Siguiendo las pautas marcadas en el ejemplo anterior, vamos a crear una función para redondear un float a cualquier número de decimales deseado.

    Se trata de aplicar la misma lógica anterior. Para redondear a dos decimales hemos visto que había que multiplicar por 100, redondear y luego dividir otra vez por 100. Si queremos redondear con un solo decimal, tendremos que multiplicar por 10, redondear y luego dividir otra vez por 10.

    Vamos a realizar un ejemplo de redondeo a tres decimales. Tenemos el valor 0.65195. Como queremos conservar 3 decimales, debemos multiplicar por 1000, con lo que obtenemos 651.95. Ahora hacemos el redondeo con la función round(), que nos deja la cifra sin decimales en 652 (se redondea al entero más próximo). Finalmente, debemos volver a dividir por 1000 el valor, con lo que tenemos 0.652.

    La regla entonces es que tenemos que multiplicar y luego dividir, por la potencia de 10 con el número de decimales que deseamos conservar. Para obtener potencias en PHP tenemos la función pow(), que recibe la base y exponente de la potencia buscada.

    Por ejemplo, pow(10,3) nos devuelve 1000 y pow(10,1) nos devuelve 10.

    Con esta función en PHP podremos obtener el redondeo a los decimales que se desee.

    function redondeado ($numero, $decimales) {
    $factor = pow(10, $decimales);
    return (round($numero*$factor)/$factor); }

    Si la llamamos con un juego de valores como estos:

    redondeado (0.00211,3)
    redondeado (8.56,2)
    redondeado (7.26,1)
    redondeado (211,3)
    redondeado (2.009,2)

    Obtendremos los siguientes resultados:

    0.002
    8.56
    7.3
    211
    2.01

    Perl and PHP Regular Expressions

     

    PHP regexes are based on the PCRE (Perl-Compatible Regular Expressions), so any regexp that works for one should be compatible with the other or any other language that makes use of the PCRE format. Here are some commonly needed regular expressions for both PHP and Perl. Each regex will be in string format and will include delimiters.

    All Major Credit Cards

    This regular expression will validate all major credit cards: American Express (Amex), Discover, Mastercard, and Visa.

    //All major credit cards regex
    '/^(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14}|6011[0-9]{12}|622((12[6-9]|1[3-9][0-9])|([2-8][0-9][0-9])|(9(([0-1][0-9])|(2[0-5]))))[0-9]{10}|64[4-9][0-9]{13}|65[0-9]{14}|3(?:0[0-5]|[68][0-9])[0-9]{11}|3[47][0-9]{13})*$/'
    1. //All major credit cards regex
    2. ‘/^(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14}|6011[0-9]{12}|622((12[6-9]|1[3-9][0-9])|([2-8][0-9][0-9])|(9(([0-1][0-9])|(2[0-5]))))[0-9]{10}|64[4-9][0-9]{13}|65[0-9]{14}|3(?:0[0-5]|[68][0-9])[0-9]{11}|3[47][0-9]{13})*$/’

    Alpha-Numeric Characters

    Test for alpha-numeric characters with this regexp.

    //Alpha-numeric characters only
    '/^[a-zA-Z0-9]*$/'
    1. //Alpha-numeric characters only
    2. ‘/^[a-zA-Z0-9]*$/’

    Alpha-Numeric Characters With Spaces

    Test for alpha-numeric characters and spaces with this regexp.

    //Alpha-numeric characters with spaces only
    '/^[a-zA-Z0-9 ]*$/'
    1. //Alpha-numeric characters with spaces only
    2. ‘/^[a-zA-Z0-9 ]*$/’

    Alphabetic Characters

    This regex will test for alphabetic characters only (upper and lowercase).

    //Alphabetic characters only
    '/^[a-zA-Z]*$/'
    1. //Alphabetic characters only
    2. ‘/^[a-zA-Z]*$/’

    American Express Credit Card

    Verify Amex credit cards with this regexp.

    //Amex credit card regex
    '/^(3[47][0-9]{13})*$/'
    1. //Amex credit card regex
    2. ‘/^(3[47][0-9]{13})*$/’

    Australian Postal Codes

    If you need to verify Australian Postal Codes, use this regular expression.

    //Australian Postal Codes
    '/^((0[289][0-9]{2})|([1345689][0-9]{3})|(2[0-8][0-9]{2})|(290[0-9])|(291[0-4])|(7[0-4][0-9]{2})|(7[8-9][0-9]{2}))*$/'
    1. //Australian Postal Codes
    2. ‘/^((0[289][0-9]{2})|([1345689][0-9]{3})|(2[0-8][0-9]{2})|(290[0-9])|(291[0-4])|(7[0-4][0-9]{2})|(7[8-9][0-9]{2}))*$/’

    Canadian Postal Codes

    Tests for valid Canadian Postal Codes.

    //Canadian Postal Codes
    '/^([ABCEGHJKLMNPRSTVXY][0-9][A-Z] [0-9][A-Z][0-9])*$/'
    1. //Canadian Postal Codes
    2. ‘/^([ABCEGHJKLMNPRSTVXY][0-9][A-Z] [0-9][A-Z][0-9])*$/’

    Canadian Provinces

    Evaluate Canadian province abbreviations with this regular expression.

    //Canadian Province Abbreviations
    '/^(?:AB|BC|MB|N[BLTSU]|ON|PE|QC|SK|YT)*$/'
    1. //Canadian Province Abbreviations
    2. ‘/^(?:AB|BC|MB|N[BLTSU]|ON|PE|QC|SK|YT)*$/’

    Date (MM/DD/YYYY)

    Validate the calendar date in MM/DD/YYYY format with this regex. Optional separators are spaces, hyphens, forward slashes, and periods. The year is limited between 1900 and 2099.

    //Date (MM/DD/YYYY)
    '/^((0?[1-9]|1[012])[- /.](0?[1-9]|[12][0-9]|3[01])[- /.](19|20)?[0-9]{2})*$/'
    1. //Date (MM/DD/YYYY)
    2. ‘/^((0?[1-9]|1[012])[- /.](0?[1-9]|[12][0-9]|3[01])[- /.](19|20)?[0-9]{2})*$/’

    Date (YYYY/MM/DD)

    Validate the calendar date in YYYY/MM/DD format with this regex. Optional separators are spaces, hyphens, forward slashes, and periods. The year is limited between 1900 and 2099.

    //Date (YYYY/MM/DD)
    '#^((19|20)?[0-9]{2}[- /.](0?[1-9]|1[012])[- /.](0?[1-9]|[12][0-9]|3[01]))*$#'
    1. //Date (YYYY/MM/DD)
    2. ‘#^((19|20)?[0-9]{2}[- /.](0?[1-9]|1[012])[- /.](0?[1-9]|[12][0-9]|3[01]))*$#’

    Digits

    This regex will test for digits (whole numbers).

    //Digits only
    '/^[0-9]*$/'
    1. //Digits only
    2. ‘/^[0-9]*$/’

    Diner’s Club Credit Card

    Test and verify Diner’s Club credit card numbers with this regexp.

    //Diner's Club credit card regex
    '/^(3(?:0[0-5]|[68][0-9])[0-9]{11})*$/'
    1. //Diner’s Club credit card regex
    2. ‘/^(3(?:0[0-5]|[68][0-9])[0-9]{11})*$/’

    Emails

    This email regex is not fully RFC5322-compliant, but it will validate most common email address formats correctly.

    //Email regex
    '/^([a-zA-Z0-9._%-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4})*$/'
    1. //Email regex
    2. ‘/^([a-zA-Z0-9._%-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4})*$/’

    IP Addresses

    Test IP Addresses with this regular expression.

    //IP address regex
    '/^((?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?))*$/'
    1. //IP address regex
    2. ‘/^((?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?))*$/’

    Lowercase Alphabetic Characters

    This regex will test for lowercase letters.

    //Lowercase letters only
    '/^([a-z])*$/'
    1. //Lowercase letters only
    2. ‘/^([a-z])*$/’

    MasterCard Credit Card

    Verify MasterCard credit card numbers with this regex.

    //MasterCard credit card numbers
    '/^(5[1-5][0-9]{14})*$/'
    1. //MasterCard credit card numbers
    2. ‘/^(5[1-5][0-9]{14})*$/’

    Passwords

    Test for a strong password with this regex. The password must contain one lowercase letter, one uppercase letter, one number, and be at least 6 characters long.

    //Password regex
    '/^(?=^.{6,}$)((?=.*[A-Za-z0-9])(?=.*[A-Z])(?=.*[a-z]))^.*$/'
    1. //Password regex
    2. ‘/^(?=^.{6,}$)((?=.*[A-Za-z0-9])(?=.*[A-Z])(?=.*[a-z]))^.*$/’

    Phone Numbers (North American)

    This regex will validate a 10-digit North American telephone number. Separators are not required, but can include spaces, hyphens, or periods. Parentheses around the area code are also optional.

    //Phone number regex
    '/^((([0-9]{1})*[- .(]*([0-9]{3})[- .)]*[0-9]{3}[- .]*[0-9]{4})+)*$/'
    1. //Phone number regex
    2. ‘/^((([0-9]{1})*[- .(]*([0-9]{3})[- .)]*[0-9]{3}[- .]*[0-9]{4})+)*$/’

    Social Security Numbers

    If you need to validate US Social Security Numbers, use this regular expression

    //SSN regex
    '/^([0-9]{3}[-]*[0-9]{2}[-]*[0-9]{4})*$/'
    1. //SSN regex
    2. ‘/^([0-9]{3}[-]*[0-9]{2}[-]*[0-9]{4})*$/’

    UK Postal Codes

    This regexp verifies UK Postal Codes.

    //UK Postal Codes regex
    '/^([A-Z]{1,2}[0-9][A-Z0-9]? [0-9][ABD-HJLNP-UW-Z]{2})*$/'
    1. //UK Postal Codes regex
    2. ‘/^([A-Z]{1,2}[0-9][A-Z0-9]? [0-9][ABD-HJLNP-UW-Z]{2})*$/’

    Uppercase Alphabetic Characters

    This regex will test for uppercase letters.

    //Uppercase letters only
    '/^([A-Z])*$/'
    1. //Uppercase letters only
    2. ‘/^([A-Z])*$/’

    URLs

    This URL regex will validate most common URL formats correctly.

    //URL regex
    '/^(((http|https|ftp):\/\/)?([[a-zA-Z0-9]\-\.])+(\.)([[a-zA-Z0-9]]){2,4}([[a-zA-Z0-9]\/+=%&_\.~?\-]*))*$/'
    1. //URL regex
    2. ‘/^(((http|https|ftp):\/\/)?([[a-zA-Z0-9]\-\.])+(\.)([[a-zA-Z0-9]]){2,4}([[a-zA-Z0-9]\/+=%&_\.~?\-]*))*$/’

    US States

    Validate all 2-letter US State abbreviates with this regular expression.

    //US States regex
    '/^(?:A[KLRZ]|C[AOT]|D[CE]|FL|GA|HI|I[ADLN]|K[SY]|LA|M[ADEINOST]|N[CDEHJMVY]|O[HKR]|PA|RI|S[CD]|T[NX]|UT|V[AT]|W[AIVY])*$/'
    1. //US States regex
    2. ‘/^(?:A[KLRZ]|C[AOT]|D[CE]|FL|GA|HI|I[ADLN]|K[SY]|LA|M[ADEINOST]|N[CDEHJMVY]|O[HKR]|PA|RI|S[CD]|T[NX]|UT|V[AT]|W[AIVY])*$/’

    US ZIP Codes

    This regexp verifies US ZIP Codes, with an optional 4 number ZIP code extension.

    //US ZIP Codes regex
    '/^([0-9]{5}(?:-[0-9]{4})?)*$/'
    1. //US ZIP Codes regex
    2. ‘/^([0-9]{5}(?:-[0-9]{4})?)*$/’

    Visa Credit Card

    Verify Visa credit card numbers with this regex.

    //Visa credit card numbers
    '/^(4[0-9]{12}(?:[0-9]{3})?)*$/'
    1. //Visa credit card numbers
    2. ‘/^(4[0-9]{12}(?:[0-9]{3})?)*$/’

    JavaScript Regular Expressions

    The JavaScript version of regex is a slightly different flavor than the PCRE variety, so I’ve included those regexes in a separate section.

    All Major Credit Cards

    This regular expression will validate all major credit cards: American Express (Amex), Discover, Mastercard, and Visa. Note that it is not quite as precise as its counterpart Perl and PHP regex.

    //All major credit cards JavaScript regex
    '^(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14}|6011[0-9]{12}|3(?:0[0-5]|[68][0-9])[0-9]{11}|3[47][0-9]{13})$'
    1. //All major credit cards JavaScript regex
    2. ‘^(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14}|6011[0-9]{12}|3(?:0[0-5]|[68][0-9])[0-9]{11}|3[47][0-9]{13})$’

    Alpha-Numeric Characters

    Test for alpha-numeric characters with this regexp.

    //JavaScript alpha-numeric characters only
    '^[a-zA-Z0-9]+$'
    1. //JavaScript alpha-numeric characters only
    2. ‘^[a-zA-Z0-9]+$’

    Alphabetic Characters

    This regex will test for alphabetic characters only (upper and lowercase).

    //JavaScript Alphabetic characters only
    '^[a-zA-Z]+$'
    1. //JavaScript Alphabetic characters only
    2. ‘^[a-zA-Z]+$’

    Canadian Postal Codes

    Tests for valid Canadian Postal Codes.

    //JavaScript Canadian Postal Codes
    '^[ABCEGHJKLMNPRSTVXY][0-9][A-Z] [0-9][A-Z][0-9]$'
    1. //JavaScript Canadian Postal Codes
    2. ‘^[ABCEGHJKLMNPRSTVXY][0-9][A-Z] [0-9][A-Z][0-9]$’

    Date (MM/DD/YYYY)

    Validate the calendar date in MM/DD/YYYY format with this regex. Optional separators are spaces, hyphens, forward slashes, and periods. The year is limited between 1900 and 2099.

    //JavaScript Date (MM/DD/YYYY)
    '^(0?[1-9]|1[012])[- /.](0?[1-9]|[12][0-9]|3[01])[- /.](19|20)?[0-9]{2}$'
    1. //JavaScript Date (MM/DD/YYYY)
    2. ‘^(0?[1-9]|1[012])[- /.](0?[1-9]|[12][0-9]|3[01])[- /.](19|20)?[0-9]{2}$’

    Date (YYYY/MM/DD)

    Validate the calendar date in YYYY/MM/DD format with this regex. Optional separators are spaces, hyphens, forward slashes, and periods. The year is limited between 1900 and 2099.

    //JavaScript Date (YYYY/MM/DD)
    '^(19|20)?[0-9]{2}[- /.](0?[1-9]|1[012])[- /.](0?[1-9]|[12][0-9]|3[01])$'
    1. //JavaScript Date (YYYY/MM/DD)
    2. ‘^(19|20)?[0-9]{2}[- /.](0?[1-9]|1[012])[- /.](0?[1-9]|[12][0-9]|3[01])$’

    Digits

    This regex will test for digits (whole numbers).

    //JavaScript digits only
    '^[0-9]+$'
    1. //JavaScript digits only
    2. ‘^[0-9]+$’

    Emails

    This email regex is not fully RFC5322-compliant, but it will validate most common email address formats correctly.

    //JavaScript email regex
    '^[a-zA-Z0-9._%-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$'
    1. //JavaScript email regex
    2. ‘^[a-zA-Z0-9._%-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$’

    Passwords

    Test for a strong password with this regex. The password must contain one lowercase letter, one uppercase letter, one number, and be at least 6 characters long.

    //JavaScript Password regex
    "(?=^.{6,}$)((?=.*[A-Za-z0-9])(?=.*[A-Z])(?=.*[a-z]))^.*"
    1. //JavaScript Password regex
    2. “(?=^.{6,}$)((?=.*[A-Za-z0-9])(?=.*[A-Z])(?=.*[a-z]))^.*”

    Phone Numbers (North American)

    This regex will validate a 10-digit North American telephone number. Separators are not required, but can include spaces, hyphens, or periods. Parentheses around the area code are also optional.

    //JavaScript phone number regex
    '^(([0-9]{1})*[- .(]*([0-9]{3})[- .)]*[0-9]{3}[- .]*[0-9]{4})+$'
    1. //JavaScript phone number regex
    2. ‘^(([0-9]{1})*[- .(]*([0-9]{3})[- .)]*[0-9]{3}[- .]*[0-9]{4})+$’

    URLs

    This URL regex will validate most common URL formats correctly.

    //JavaScript URL regex
    '^((http|https|ftp)://)?([[a-zA-Z0-9]\-\.])+(\.)([[a-zA-Z0-9]]){2,4}([[a-zA-Z0-9]/+=%&_\.~?\-]*)$'
    1. //JavaScript URL regex
    2. ‘^((http|https|ftp)://)?([[a-zA-Z0-9]\-\.])+(\.)([[a-zA-Z0-9]]){2,4}([[a-zA-Z0-9]/+=%&_\.~?\-]*)$’

    US ZIP Codes

    This regexp verifies US ZIP Codes, with an optional 4 number ZIP code extension.

    //JavaScript US ZIP Codes regex
    '^[0-9]{5}(?:-[0-9]{4})?$'
    1. //JavaScript US ZIP Codes regex
    2. ‘^[0-9]{5}(?:-[0-9]{4})?$’