我必须验证以下场景:“15AB12”条件:(1)第一个元素应该是1 +一个数字+两个字母+2个数字。我需要为文本框验证这一点。这是我的代码。我不知道我错过了哪里!!!
<label>Username(6):</label>
<input id='username' type='text'>
<p id="p2"></p>
<button id="submit" onclick= "pepe(); return false"">ChecForm</button>
<script>
function pepe(){
if (!($("#username").val().match(/^1\[a-zA-Z0-9]{5}/)))
document.write(" true");
else
document.write("false");
}
</script>
答案 0 :(得分:2)
第一个问题是你转义了一个[
字符,因此,如果你不这样做,将一个字符类变成一个字符序列和evne,[a-zA-Z0-9]{5}
将匹配5个字母数字字符,而不管数字和字母的顺序,它也允许在它们之后的任何特殊字符,因为没有使用字符串锚的结尾。
你的正则表达式应该是
/^1[0-9][a-zA-Z]{2}[0-9]{2}$/
请参阅regex demo
详细说明:
^
- 字符串开头1
- 1
数字[0-9]
- 任何一位数字[a-zA-Z]{2}
- 2个ASCII字母[0-9]{2}
- 任意2位数字$
- 字符串结束。此外,当您需要检查字符串是否与模式匹配时,RegExp#test(String)
看起来更合适(如果找到匹配项,它不会返回带匹配数据的数组,只有true或false)。