RegEx for jQuery Input Validation

RegEx for jQuery Input Validation

本文关键字:Validation Input jQuery for RegEx      更新时间:2023-09-26

我正在使用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),它将接受它并通过验证。

问题出在哪里?

提前谢谢。

或此模式

^(?='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
/^'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]*$/则仅匹配字母和数字,仅当它包含一个字母时。

如果你想

使用所有的HTML5,看看这个小提琴:http://jsfiddle.net/bud68oho/2/

此小提琴使用required和模式属性来验证表单。如果未填写输入,则必需属性不允许发布表单。pattern 属性允许您实现正则表达式以进行匹配。如果输入不符合正则表达式的要求,则表单将不会发布。

这种方法的唯一缺点是浏览器兼容性。确保使用目标浏览器测试此方法。上面的示例适用于最新版本的IE和Chrome,我无法进行任何进一步的测试。

/^[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放在正则表达式(img)之后,你只需要把a-z或A-Z放在后面,它不区分大小写。注意:这些正则表达式允许空字符串"。

我认为您可能需要对仅数字情况进行正面字母数字检查和负面检查。

$.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");