Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript-在Opera中验证十六进制?_Javascript_Regex - Fatal编程技术网

JavaScript-在Opera中验证十六进制?

JavaScript-在Opera中验证十六进制?,javascript,regex,Javascript,Regex,该功能适用于Firefox、Chrome和IE9。在歌剧中不起作用 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 测试 #0

该功能适用于Firefox、Chrome和IE9。在歌剧中不起作用

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

有什么想法吗?

这个正则表达式不正确<在这个正则表达式中,code>#1234也是正确的。使用正则表达式([a-fA-F0-9]{3}{124;[a-fA-F0-9]{6})$/

如果交换乘法器,它也可以在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
,因为它包含正则表达式对象,而不是字符串。如果使用匈牙利符号指定数据类型,则前缀必须与实际数据类型匹配,否则只能是相反的。)

请注意,对于该任务,正则表达式已经是错误的,因为它也将匹配
#123a
。你可能想要
^#([0-9a-f]{3}{1.2}$
。这并不能真正解决Opera中正在发生的事情,因此,应该是一个评论(而且已经有了)@David Hedlund抱歉,误解了这个问题,你的regexp不也会匹配#QQ吗?这让我很想知道为什么一个在Opera中工作,而另一个不在Opera中工作。