通过jquery验证表单时,确保字段至少包含一个字母
所以,我在正则表达式和javascript方面非常差劲。因此,当我意识到需要通过jquery验证表单字段以确保至少使用了一个alpha字符时,我决定向您寻求一些帮助 我想允许用户在此字段中使用撇号、空格、破折号、句点、下划线和字母数字字符。但是,它们必须至少使用一个字母字符 这里是我创建的验证器方法,它除了确保使用至少一个alpha字符外,什么都做通过jquery验证表单时,确保字段至少包含一个字母,jquery,regex,jquery-validate,Jquery,Regex,Jquery Validate,所以,我在正则表达式和javascript方面非常差劲。因此,当我意识到需要通过jquery验证表单字段以确保至少使用了一个alpha字符时,我决定向您寻求一些帮助 我想允许用户在此字段中使用撇号、空格、破折号、句点、下划线和字母数字字符。但是,它们必须至少使用一个字母字符 这里是我创建的验证器方法,它除了确保使用至少一个alpha字符外,什么都做 $.validator.addMethod("nameRegex", function(value, element) { ret
$.validator.addMethod("nameRegex", function(value, element) {
return this.optional(element) || /[^a-z/g]+/gi.test(value) || !/[^\.\'\:\-_ a-z0-9]+/gi.test(value);
}, "Name must contain at least one letter.");
有任何提示/提示/见解/侮辱吗?谢谢大家 我很幸运地对所需字母进行了前瞻性查找,然后只匹配最小长度的有效字符。在我的示例中,我使用了最小长度为8个字符的有效字符,包括撇号、空格、连字符、句点、下划线和字母数字字符。“\w”字符类应该匹配下划线和字母数字。它似乎在我的测试中起作用:
var r = new RegExp("^(?=([` -.]|\\w)*?[a-zA-Z])([` -.]|\\w){8,}$")
> r.test('12345678') //all numbers shouldn't work
false
> r.test('12345678a') //long enough and one letter should work
true
> r.test('12345`_bc') //allow ` _
true
> r.test('a12345`_') //shouldn't matter if letter is in front
true
> r.test('123a45`_') //shouldn't matter if letter is in middle
true
> r.test('12345`_29') //even if special characters no letter should not work
false
编辑:我在“前瞻”中的“*”后面添加了一个“?”,以使量词不贪婪。另外,我应该注意到,我在Chrome中测试了这一点,显然我的测试用例不是决定性的。不过我希望这能有所帮助。另一种方法是将零与多个有效字符(至少1个字母)匹配,然后将零与多个有效字符匹配。比如:
var r = new RegExp("^([` -.]|\\w)*[a-zA-Z]+([` -.]|\\w)*$")
没问题。我希望正则表达式是有意义的。但是我很愚蠢,那么我如何在验证器中实际测试它呢?只需在条件中添加一个| | r.test(value)?现在您会对验证器插件产生疑问,而我最近没有使用它。我想说,您可以执行“返回this.optional(value)| | r.test(value);”,但我不能肯定。