Saltar al contenido

jQuery validate: ¿Cómo agregar una regla para la validación de expresiones regulares?

Solución:

Gracias a la respuesta de redsquare agregué un método como este:

$.validator.addMethod(
  "regex",
  function(value, element, regexp) {
    var re = new RegExp(regexp);
    return this.optional(element) || re.test(value);
  },
  "Please check your input."
);

Ahora todo lo que necesita hacer para validar contra cualquier expresión regular es esto:

$("#Textbox").rules("add", { regex: "^[a-zA-Z'.\s]{1,40}$" })

Además, parece que hay un archivo llamado additional-methods.js que contiene el método “patrón”, que puede ser un RegExp cuando se crea utilizando el método sin comillas.


Editar

los pattern La función es ahora la forma preferida de hacer esto, haciendo el ejemplo:

$("#Textbox").rules("add", { pattern: "^[a-zA-Z'.\s]{1,40}$" })
  • https://cdnjs.com/libraries/jquery-validate
    • https://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.19.2/jquery.validate.min.js
    • https://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.19.2/additional-methods.min.js

Puedes usar addMethod ()

p.ej

$.validator.addMethod('postalCode', function (value) { 
    return /^((d{5}-d{4})|(d{5})|([A-Z]d[A-Z]sd[A-Z]d))$/.test(value); 
}, 'Please enter a valid US or Canadian postal code.');

buen artículo aquí https://web.archive.org/web/20130609222116/http://www.randallmorey.com/blog/2008/mar/16/extending-jquery-form-validation-plugin/

Tuve algunos problemas para juntar todas las piezas para hacer un validador de expresiones regulares jQuery, pero lo hice funcionar … Aquí hay un ejemplo completo de trabajo. Utiliza el complemento ‘Validación’ que se puede encontrar en Complemento de validación de jQuery

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <script src="http://YOURJQUERYPATH/js/jquery.js" type="text/javascript"></script>
    <script src="http://YOURJQUERYPATH/js/jquery.validate.js" type="text/javascript"></script>
    <script type="text/javascript">

        $().ready(function() {
            $.validator.addMethod("EMAIL", function(value, element) {
                return this.optional(element) || /^[a-zA-Z0-9._-][email protected][a-zA-Z0-9-]+.[a-zA-Z.]{2,5}$/i.test(value);
            }, "Email Address is invalid: Please enter a valid email address.");

            $.validator.addMethod("PASSWORD",function(value,element){
                return this.optional(element) || /^(?=.*d)(?=.*[a-z])(?=.*[A-Z]).{8,16}$/i.test(value);
            },"Passwords are 8-16 characters with uppercase letters, lowercase letters and at least one number.");

            $.validator.addMethod("SUBMIT",function(value,element){
                return this.optional(element) || /[^ ]/i.test(value);
            },"You did not click the submit button.");

            // Validate signup form on keyup and submit
            $("#LOGIN").validate({
                rules: {
                    EMAIL: "required EMAIL",
                    PASSWORD: "required PASSWORD",
                    SUBMIT: "required SUBMIT",
                },
            });
        });
    </script>
</head>
<body>
    <div>
        <form name="LOGIN" method="post" action="/index/secure/authentication?action=login">
            <h1>Log In</h1>
            <div>
                <label for="EMAIL">Email Address</label>
                <input name="EMAIL" type="text" value="" tabindex="1" />
            </div>
            <div>
                <label for="PASSWORD">Password</label>
                <input name="PASSWORD" type="password" value="" tabindex="2" />
            </div>
            <div>
                <input name="SUBMIT" type="submit" value="Submit" tabindex="3" />
            </div>
        </form>
    </div>
</body>
</html>
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *