我已经有了这个正则表达式:
function check(){
var re = /[0-9A-Fa-f]{6}/g;
var inputString = document.getElementById("check").value;
if(re.test(inputString)) {
window.alert("Valid hex colour")
} else {
window.alert("Invalid hex colour")
}
re.lastIndex = 0;
}
这是输入:
<input id="check" maxlength="6" placeholder="------">
这是事件监听器:
document.getElementById('check').onkeydown=function(cc){
if(cc.keyCode==13){
check()
}
else if(cc.keyCode==46){
document.getElementById("check").value = "";
}
}
这很好用。我也试过这个正则表达式:
/[0-9A-Fa-f]{3}|[0-9A-Fa-f]{6}/g;
但是这也接受长度为3个,4个,5个或6个字符的十六进制值。 如何使用正则表达式检查长度正好为3或正好6个字符的十六进制值?提前谢谢。
答案 0 :(得分:1)
这很好用。我也试过这个正则表达式:
/[0-9A-Fa-f]{3}|[0-9A-Fa-f]{6}/g;
但是这也接受长度为3个,4个,5个或6个字符的十六进制值。
您需要锚点(并且没有全局标志):
/^(?:[0-9A-Fa-f]{3}|[0-9A-Fa-f]{6})$/
您还可以添加i
以减少冗长:
/^(?:[0-9A-F]{3}|[0-9A-F]{6})$/i
没有锚点,四位十六进制字符串与{3}
规则匹配(因为包含三位十六进制字符串)。