我正在使用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,因此这是从中“构建”正则表达式的代码片段:
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文件中,我有这个内容(摘要):
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等。
有人可以帮我吗?谢谢
最佳答案
我要回答我的问题,因为我可以找出问题所在。
首先,我尝试使用我以前写过的一个表达式:
$this->form_validation->set_rules('name', 'Nombre', 'required|min_length[2]|max_length[50]|regex_match[/^([a-z,A-Z,á,é,í,ó,ú,â,ê,ô,ã,õ,ç,Á,É,Í,Ó,Ú,Â,Ê,Ô,Ã,Õ,Ç,ü,ñ,Ü,Ñ," "]+)$/]');
将其移至javascript并没有按照我的要求进行验证,但错误出在空格中:“
我只是将其替换为“”,仅此而已。因此,我正在寻找的拉丁名称的最终正则表达式就在我眼前:
pattern: "[a-z,A-Z,á,é,í,ó,ú,â,ê,ô,ã,õ,ç,Á,É,Í,Ó,Ú,Â,Ê,Ô,Ã,Õ,Ç,ü,ñ,Ü,Ñ,' ']+",
使用来自Additional-methods.js的模式方法
关于javascript - 用于国际字符名称的正则表达式,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21170097/