所以,我在正则表达式和javascript方面做得很糟糕。因此,当我意识到我需要通过jquery验证表单字段以确保至少使用一个字母字符时,我决定向您寻求一些帮助。
我想允许用户在此字段中使用撇号、空格、破折号、句点、下划线和字母数字字符。但是,它们必须至少使用一个字母字符。
下面是我创建的验证器方法,它执行除确保至少使用一个alpha char之外的所有操作。
$.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.");
有什么建议/提示/见解/侮辱吗?谢谢大家!
发布于 2010-08-11 04:30:21
我很幸运地提前查找了所需的字母,然后只匹配最小长度的有效字符。在我的示例中,我使用的最小长度为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)*$")
https://stackoverflow.com/questions/3452927
复制相似问题