首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >通过jquery验证表单时,请确保字段至少包含一个字母

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

Stack Overflow用户
提问于 2010-08-11 04:01:58
回答 1查看 1.4K关注 0票数 0

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

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

下面是我创建的验证器方法,它执行除确保至少使用一个alpha char之外的所有操作。

代码语言:javascript
运行
复制
 $.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.");

有什么建议/提示/见解/侮辱吗?谢谢大家!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-08-11 04:30:21

我很幸运地提前查找了所需的字母,然后只匹配最小长度的有效字符。在我的示例中,我使用的最小长度为8个字符,有效字符包括撇号、空格、连字符、句点、下划线和字母数字字符。我认为'\w‘字符类应该匹配下划线和字母数字。它似乎在我的测试中起作用了:

代码语言:javascript
运行
复制
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个字母,然后零对多个有效字符。类似于:

代码语言:javascript
运行
复制
var r = new RegExp("^([` -.]|\\w)*[a-zA-Z]+([` -.]|\\w)*$")
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3452927

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档