JavaScript regex.test Firefox与其他浏览器的不同行为

时间:2014-04-29 10:30:57

标签: javascript regex cross-browser

我在JavaScript中使用了正则表达式,它应该匹配捷克语字母的每个字母。

var patt = new RegExp("[A-Za-zÁČĎÉĚÍÓŘŠŤÚŮÝŽáčďéěíóřšťúůýž]");

问题是,在Mozilla中,这个正则表达式绝对匹配所有内容,包括像

这样的字符串
var str = "2";

和其他字符串,不应匹配。

所有其他浏览器(尝试使用Chrome,Opera,IE,Safari)确实返回" false"以下代码行

var res = patt.test(str);

我真的很担心这种行为,欢迎任何帮助!

谢谢

1 个答案:

答案 0 :(得分:0)

您使用的是哪个版本的Firefox?来自Firefox浏览器上的Firefox 28.0上的firefox开发控制台(按F12):

var patt = new RegExp("[A-Za-zÁČĎÉĚÍÓŘŠŤÚŮÝŽáčďéěíóřšťúůýž]");
# undefined
var str = "2";
# undefined
var res = patt.test(str);
# undefined
res
# false
编辑:如帖子中所述,它是UTF-8 / ASCII编码错误,编码为:

var patt = new RegExp("[A-Za-zÁČĎÉĚÍÓŘŠŤÚŮÝŽáčďéěí‌​óřšťúůýž]");
W3Cschools(他们非常可怕,并且不应该被用得太多)。