此功能适用于Firefox,Chrome,IE9。在Opera中不起作用。
function isValidHex(hex) { alert(hex);
var strPattern = /^#([0-9a-f]{1,2}){3}$/i; alert(strPattern.test(hex));
return strPattern.test(hex);
}
进入的十六进制是相同的。 strPatter.test的结果在Opera中返回false,在Firefox中返回true。
测试。
#000000
#ffffff
有什么想法吗?
答案 0 :(得分:2)
此正则表达式不正确。这个正则表达式中#1234
也是正确的。使用正则表达式/^#([a-fA-F0-9]{3}|[a-fA-F0-9]{6})$/
。
答案 1 :(得分:2)
如果你交换乘数,它也适用于Opera:
function isValidHex(hex) {
var objPattern = /^#([0-9a-f]{3}){1,2}$/i;
return objPattern.test(hex);
}
无论如何你都想这样做,这样你就可以匹配一组或两组三位数(即3或3 + 3个字符),而不是三组一两位数(即1 + 1 + 1,2 +) 1 + 1,2 + 2 + 1或2 + 2 + 2个字符)。
(请注意,我还将strPattern
中的变量重命名为objPattern
,因为它包含正则表达式对象,而不是字符串。如果使用匈牙利表示法来指定数据类型,则前缀为匹配实际的数据类型,或者它只是反作用。)