2010-08-30 84 views
3

我使用下面的代码,但它不工作:-(如何输入字符串检查大写字母,使用jQuery

//First four characters of input Text should be ALPHABATES (Letters) 

    if (($("#txtId").val()).length >= 4) { 
     var firstFourChars = $("#txtId").val().substring(0, 4); 
     var pattern = new RegExp('[^A-Z]'); 

     if (firstFourChars.match(pattern)) 
      isValid = true; 
     else 
      isValid = false; 
    } 

回答

2

你不需要使用substring()。你的正则表达式可以为你做所有的工作。您使用的RegExp与不在A和Z之间的字符匹配。正如Avinash所说,如果您的前4个字符是大写,^ [A-Z] {4}将匹配。在您的正则表达式开头的“^”表示以下内容应该是字符串的开头。放置在方括号内时,它将恢复想要匹配的字符范围。

+0

感谢您的详细解释。 :-) – Biki 2010-08-30 11:37:42

+0

如果可能的话让我知道它更好地验证上述,无论是onblur事件还是onkeyupv事件? 我发现,onkeyup会对每个输入的字符进行触发,但是会比onblur更加一致。 – Biki 2010-08-30 11:42:25

+0

这取决于你想要达到的行为:正如你所说的,每个击键都会触发键控,只有当焦点离开该字段时才会触发模糊。 – PJP 2010-08-30 13:50:04

8

变化/[^A-Z]//^[A-Z]/

例如

var a = "ABCJabcd"; 
console.log(a.match(/^[A-Z]{4}/)); 
+0

谢谢,它现在工作正常:-)。 – Biki 2010-08-30 11:06:19

0

正则表达式应该是/ [^ AZ] {4} /如果你想匹配4个小写字符

0

要在大报的中间检测更改/^[AZ] /以/ [AZ]/

Example text: " asşldla ABCJ abcd AÇALASD" 

$('.Order input').change(function(){ucheck($(this).val())}); 
$('.Order input').keyup(function(){ucheck($(this).val())}); 

    function ucheck(a) { 
     if(a.match(/[A-ZĞÜŞİÖÇ]{4}/)){ 
$('.Order #Error').html(' UPPERCASE'); 
}else{$('.Order #Error').html('Capitalize');} 
    } 
0

如果他们需要资金:

const startsWithCapitals = /^[A-Z]{4}/.test(string); 

或者,如果他们刚需是字母,添加i用于忽略大小写:

const startsWithLetters = /^[a-z]{4}/i.test(string); 

^意味着〜应变的开始g和{number}表示x拷贝

相关问题