我正在使用jquery验证插件来验证我的输入字段。
我有一个应该接受的字段:
a)字母[a-zA-Z]
b)带数字的字母[a-zA-Z0-9]
c)没有特殊字符
所以:
ADFad1334或43545SFDDFdf454fgf:是正确的,因为我们有字母和数字
asdadadASD:是正确的,因为我们只有字母
12312342:不正确,因为它只有数字
sdff23424#$:不正确,因为有特殊字符(在本例中为#和$)
我使用的代码如下:
$.validator.addMethod("atLeastAletter", function(value) {
return /^[a-zA-Z]*$/img.test(value) || /^[a-zA-Z0-9]*$/img.test(value);
},"Must contain at least a letter and/or number(s). No other characters are allowed");
然后:
$('#RegistrationForm').validate({
rules: {
fieldname: {
atLeastAletter: true
},
.....
这个正则表达式的问题在于,如果输入只是数字(例如3434224),它将接受它并通过验证。
有什么问题?
提前致谢。
答案 0 :(得分:2)
/^\w*[a-zA-Z]+\w*$/
这应匹配任何只包含字母和数字的字符串,但必须至少包含一个字母。
sadAddsa // Pass
98463298 // Fail
jdsH98sd // Pass
987Fkjd89 // Pass
jfk!jhj // Fail
kjhgh8768!@ // Fail
A8 // Pass
8S // Pass
B // Pass
7 // Fail
B_bkfd86jh // Fail (Using the regex in the edit)
编辑:正如Alpha Bravo指出的那样。这也会匹配下划线。如果您不想要下划线/^[a-zA-Z0-9]*[a-zA-Z]+[a-zA-Z0-9]*$/
只会匹配字母和数字,只有它包含一个字母。
答案 1 :(得分:2)
或此模式
^(?=\S*[a-zA-Z])[a-zA-Z0-9]+$
^ # Start of string/line
(?= # Look-Ahead
\S # <not a whitespace character>
* # (zero or more)(greedy)
[a-zA-Z] # Character Class [a-zA-Z]
) # End of Look-Ahead
[a-zA-Z0-9] # Character Class [a-zA-Z0-9]
+ # (one or more)(greedy)
$ # End of string/line
答案 2 :(得分:0)
如果您想要使用所有HTML5,请查看此小提琴:http://jsfiddle.net/bud68oho/2/
这个小提琴使用required
和模式属性来验证表单。如果未填写输入,则required属性不允许表单发布。pattern
属性允许您实现匹配的正则表达式。如果输入不符合正则表达式的要求,那么表单将不会发布。
这种方法唯一的问题是浏览器兼容性。确保使用目标浏览器测试此方法。以上示例适用于最新版本的IE和Chrome,我无法进行任何进一步测试。
答案 3 :(得分:0)
/^[a-zA-Z0-9]*$/img.test("1")
是真的,所以只需要两个正则表达式:
return /^[a-zA-Z]*$/img.test(value) || (/[a-zA-Z]/img.test(value) && /^[a-zA-Z0-9]*$/img.test(value))
或者像这样:
return /^[a-zA-Z]*$/img.test(value) || (/^[a-zA-Z0-9]*$/img.test(value) && !/^[0-9]*$/img.test(value))
注意:如果你把i放在regexp(img)之后你只需要放一个-z或A-Z,它就不区分大小写。 哦通知:你允许空字符串“”与那些正则表达式。
答案 4 :(得分:0)
我认为你可能需要对仅数字的情况进行正面的字母数字检查和否定检查。
$.validator.addMethod("atLeastAletter", function(value) {
return /^[a-zA-Z0-9]+$/img.test(value) && ! /^[0-9]+$/img.test(value)
},"Must contain at least a letter and/or number(s). No other characters are allowed");