【发布时间】:2014-02-05 20:25:03
【问题描述】:
我正在使用 codeigniter 在 php 中工作,我需要进行一些表单验证。具体来说,使用 Codeigniter 的验证表单库,我为名称字段编码:
$this->form_validation->set_rules('name', 'Nombre', 'required|min_length[2]|max_length[50]|regex_match[/^([a-z,A-Z,á,é,í,ó,ú,â,ê,ô,ã,õ,ç,Á,É,Í,Ó,Ú,Â,Ê,Ô,Ã,Õ,Ç,ü,ñ,Ü,Ñ," "]+)$/]');
如您所见,它接受不同名称的国际字符。
现在我想在前面做同样的事情,在 jQuery 中制作相同的正则表达式。
我正在使用additional-methods.js 形式的模式方法,所以这是从中“构建”正则表达式的 sn-p:
jQuery.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);
}, "Formato Inválido.");
然后在我的 js 文件中,我拥有的是这个 (sn-p):
form2.validate({
errorElement: 'span', //default input error message container
errorClass: 'help-inline', // default input error message class
focusInvalid: false, // do not focus the last invalid input
ignore: "",
rules: {
name: {
minlength: 2,
maxlength: 50,
pattern: "[\s,.'-]*[a-zA-Z\pL][\s,.'-]*", //not working
required: true
},
我尝试了许多正则表达式,但都不起作用。它还必须接受以下口音:mathías、damián 等。
谁能帮帮我?谢谢
【问题讨论】:
-
试图“验证”名称是每个程序员一生中都会犯的基本错误之一。人类有完全合法的名字,不符合你的验证。见kalzumeus.com/2010/06/17/…
-
我想这是相当主观的。有奇怪的名字,这是真的。但仅取决于它们来自哪里......在我的国家,你不会经常看到这种情况,因此需要这样的验证。另外,这不是我可以决定的,项目标准可以决定。
-
我看不出这里争论的重点。你应该做适合你的事情,我应该做适合我和项目的事情。 xoxo
标签: javascript jquery regex