我在 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/