Estoy usando el complemento de validación jQuery . ¡Buena cosa! Quiero migrar mi solución ASP.NET existente para usar jQuery en lugar de los validadores ASP.NET. Me falta un reemplazo para el validador de expresiones regulares . Quiero poder hacer algo como esto:
$("Textbox").rules("add", { regularExpression: "^[a-zA-Z'.\s]{1,40}$" })
¿Cómo agrego una regla personalizada para lograr esto?
jquery
regex
jquery-validate
PeterFromCologne
fuente
fuente
Respuestas:
Gracias a la respuesta de redsquare agregué un método como este:
ahora todo lo que necesita hacer para validar contra cualquier expresión regular es esto:
Además, parece que hay un archivo llamado additional-method.js que contiene el método "patrón", que puede ser un RegExp cuando se crea utilizando el método sin comillas.
Editar
La
pattern
función es ahora la forma preferida de hacer esto, haciendo el ejemplo:http://bassistance.de/jquery-plugins/jquery-plugin-validation/
http://ajax.aspnetcdn.com/ajax/jquery.validate/1.9/additional-methods.js
fuente
Puedes usar addMethod ()
p.ej
buen artículo aquí https://web.archive.org/web/20130609222116/http://www.randallmorey.com/blog/2008/mar/16/extending-jquery-form-validation-plugin/
fuente
Tuve algunos problemas para reunir todas las piezas para hacer un validador de expresiones regulares jQuery, pero lo hice funcionar ... Aquí hay un ejemplo de trabajo completo. Utiliza el complemento 'Validación' que se puede encontrar en jQuery Validation Plugin
fuente
No hay razón para definir la expresión regular como una cadena.
y
Es mejor así, ¿no?
fuente
var re = new RegExp(regexp);
en la funciónExtendiendo un poco la respuesta de PeterTheNiceGuy:
Esto le permitiría pasar un objeto regex a la regla.
Restablecer la
lastIndex
propiedad es necesario cuandog
se establece -flag en elRegExp
objeto. De lo contrario, comenzaría a validarse desde la posición de la última coincidencia con esa expresión regular, incluso si la cadena de asunto es diferente.Algunas otras ideas que tuve fue permitirle usar matrices de expresiones regulares, y otra regla para la negación de las expresiones regulares:
Pero implementarlos podría ser demasiado.
fuente
Como se menciona en la documentación de addMethod :
Tenga en cuenta: Si bien la tentación es excelente para agregar un método regex que verifica su parámetro contra el valor, es mucho más limpio encapsular esas expresiones regulares dentro de su propio método. Si necesita muchas expresiones ligeramente diferentes, intente extraer un parámetro común. Una biblioteca de expresiones regulares: http://regexlib.com/DisplayPatterns.aspx
Entonces sí, debe agregar un método para cada expresión regular. La sobrecarga es mínima, mientras que le permite asignarle un nombre a la expresión regular (no debe subestimarse), un mensaje predeterminado (útil) y la capacidad de reutilizarla en varios lugares, sin duplicar la expresión regular una y otra vez.
fuente
Lo tengo para trabajar así:
Asegúrese de que la expresión regular esté entre
/
:-)fuente
Puede usar
pattern
definido en eladditional-methods.js
archivo. Tenga en cuenta que este archivo Additional-Methods.js debe incluirse después de la dependencia de jQuery Validate, luego puede usarfuente
Este es el código de trabajo.
fuente
utilizamos principalmente la notación de marcado del complemento de validación jquery y las muestras publicadas no funcionaron para nosotros, cuando las banderas están presentes en la expresión regular, por ejemplo
por lo tanto usamos el siguiente fragmento
Por supuesto, ahora se podría combinar este código, con uno de los anteriores para permitir también pasar objetos RegExp al complemento, pero como no lo necesitábamos, dejamos este ejercicio para el lector ;-).
PD: también hay un complemento incluido para eso, https://github.com/jzaefferer/jquery-validation/blob/master/src/additional/pattern.js
fuente
Esto funcionó para mí, siendo una de las reglas de validación:
Espero eso ayude
fuente