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

标签 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);

我对这种行为真的很困惑,欢迎任何帮助!

谢谢

最佳答案

您使用的是哪个版本的 Firefox?从 Arch Linux 上的 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 提供(他们非常糟糕,不应该被广泛使用)。

关于JavaScript regex.test Firefox 与其他浏览器,不同的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23362106/

相关文章:

JavaScript Object.prototype 按值

javascript - Google 可以理解从脚本添加的文本吗?

javascript - 将字符串文本替换为 HTML

regex - 对 Perl 正则表达式进行基准测试时出现意外的速度行为

c - 如何从二进制文件中读取纯文本?

javascript - 如何删除 iframe 的滚动条?

javascript - 将 require ('...' ) 与变量一起使用与在 webpack 中使用字符串

jQuery 允许手机号码指定特定号码

html - 关于 :blank work in all browsers?

image - 主流浏览器支持哪些图像格式? (2012)