【发布时间】:2019-12-02 17:10:16
【问题描述】:
这是我关于堆栈溢出的第一篇文章!
我一直在尝试使用 jquery 验证器插件来验证我在 php 上的注册表单而不提交它(我已经进行了服务器端验证)。好吧,我对 js 了解不多(目前),但我正在尝试使用这个插件中的 jquery 验证https://jqueryvalidation.org/
我还使用了额外的methods.js(包括模式),它为您提供了更多的验证方法。
让我解释一下我的情况...我在 php 上使用正则表达式来验证我的 html 表单,它就像一个魅力。当我尝试对 jquery 使用相同的正则表达式时,它会抛出错误(我已经有一些基本的代码 js 并且它可以工作)。
我尝试了很多正则表达式格式,但没有任何效果,我不知道我做错了什么。我也尝试转义代码,它不会抛出错误,但它仍然不起作用。
我一直收到“无效格式”,我似乎无法理解为什么它不起作用。 我在互联网上找到的所有正则表达式格式都不起作用,这太疯狂了,也许你可以帮助我。
这是我实际用于验证 php 中的名词(名称)输入的模式:/^\pL+(?>[ ']\pL+)*$/u
*我还复制了本地 js 中的模式方法,并从我的 .php 中删除了附加方法 cdn,但它是相同的。
** 忽略 [A-Z] 的东西,我已经尝试了很多东西,但没有一个起作用:(
这里是我的 local.js
$.validator.setDefaults({
errorClass: 'text-danger position-absolute ml-1',
highlight: function
(element) {
$(element)
.closest('.form-control')
.addClass('is-invalid');
},
unhighlight: function (element) {
$(element)
.closest('.form-control')
.removeClass('is-invalid');
},
errorPlacement: function (error, element) {
if (element.prop('type') === 'checkbox') {
error.insertAfter(element.parent());
} else {
error.insertAfter(element);
}
}
});
$.validator.addMethod("pattern", function (value, element, param) {
if (this.optional(element)) {
return true;
}
if (typeof param === "string") {
param = new RegExp("^(?:" + param + ")$");
}
return param.test(value);
}, "Invalid format.");
$("#reg_form").validate({
debug: true,
rules: {
nombre: {
required: true,
pattern: [A-Z]
},
apellido: {
required: true,
lettersonly: true
},
email: {
required: true,
email: true,
},
password: {
required: true,
strongPassword: true
},
cpassword: {
required: true,
equalTo: '#password'
}
},
messages: {
nombre: {
required: 'Requerido',
pattern: 'Formato inválido',
max: 'Muy largo'
},
apellido: {
required: 'Requerido',
pattern: 'Formato inválido',
max: 'Muy largo'
},
email: {
required: 'Please enter an email address.',
email: 'Por favor ingresa un email <em>válido</em>.',
},
password: {
required: true
}
}
});
【问题讨论】:
-
您的正则表达式非常好。 (你可以在regex101.com 上测试它,他们有一个 PHP/PCRE 部分)。
-
PHP 正则表达式在 JS 上不起作用,谢谢您的回答!
标签: javascript jquery html regex