Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过jquery验证表单时,确保字段至少包含一个字母_Jquery_Regex_Jquery Validate - Fatal编程技术网

通过jquery验证表单时,确保字段至少包含一个字母

通过jquery验证表单时,确保字段至少包含一个字母,jquery,regex,jquery-validate,Jquery,Regex,Jquery Validate,所以,我在正则表达式和javascript方面非常差劲。因此,当我意识到需要通过jquery验证表单字段以确保至少使用了一个alpha字符时,我决定向您寻求一些帮助 我想允许用户在此字段中使用撇号、空格、破折号、句点、下划线和字母数字字符。但是,它们必须至少使用一个字母字符 这里是我创建的验证器方法,它除了确保使用至少一个alpha字符外,什么都做 $.validator.addMethod("nameRegex", function(value, element) { ret

所以,我在正则表达式和javascript方面非常差劲。因此,当我意识到需要通过jquery验证表单字段以确保至少使用了一个alpha字符时,我决定向您寻求一些帮助

我想允许用户在此字段中使用撇号、空格、破折号、句点、下划线和字母数字字符。但是,它们必须至少使用一个字母字符

这里是我创建的验证器方法,它除了确保使用至少一个alpha字符外,什么都做

 $.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);”,但我不能肯定。