我必须验证以下场景:“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>
最佳答案
第一个问题是您转义了 [
字符,因此,将字符类转换为字符序列,如果您没有这样做,则会将 [a-zA-Z0 -9]{5}
将匹配 5 个字母数字字符,无论数字和字母的顺序如何,并且由于不使用字符串 anchor 结束符,因此还允许其后有任何特殊字符。
你的正则表达式应该是这样的
/^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)。
关于正则表达式模式的 JavaScript 验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43378517/