Javascript 通过十六进制或十进制代码与特定非标准字符不匹配的正则表达式

Javascript 通过十六进制或十进制代码与特定非标准字符不匹配的正则表达式,javascript,regex,Javascript,Regex,有人知道为什么上面的不匹配吗?它们是\x8A、\x9E和\x9F。除了这三个,它对所有人都有效。我还尝试了\u0138,\u0159和\u0158 还有其他方法匹配它们吗?我不知道为什么要匹配十六进制或十进制而不是文字字符,下面的正则表达式对我很有用: var regex = /^.*[\xC0\xC1\xC2\xC3\xC4\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\xD1\xA5\xD2\xD3\xD4\xD5\xD6\x8A\xD9\xDA\xDB\xDC\x

有人知道为什么上面的不匹配吗?它们是
\x8A
\x9E
\x9F
。除了这三个,它对所有人都有效。我还尝试了
\u0138
\u0159
\u0158


还有其他方法匹配它们吗?

我不知道为什么要匹配十六进制或十进制而不是文字字符,下面的正则表达式对我很有用:

var regex = /^.*[\xC0\xC1\xC2\xC3\xC4\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\xD1\xA5\xD2\xD3\xD4\xD5\xD6\x8A\xD9\xDA\xDB\xDC\xDD\xDE\x9E\x8E].*/;
//check if text contains any of ÀÁÂÃÄÇÈÉÊËÌÍÎÏÑÒÓÔÕÖŠÚÛÜÙÝŸŽ
if (text.match(regex)) {
    console.log(text);
}
正则表达式演示:


找到这些字符值的表格显示:

下表符合ISO 8859-1,也称为ISO拉丁语-1

(请注意,此表实际上甚至不是ISO 8859-1,而是它的超集,称为。)

ECMAScript 5规范的第2节说

本标准的一致性实施应解释符合Unicode标准的字符。。。采用UCS-2或UTF-16作为编码形式,实现级别3

JavaScript字符始终被视为UTF-16或UCS-2字符

在Windows-1252中,字符值
8A
对应于名为
的带有CARON的拉丁文大写字母S的字符。在UTF-16中,代码点
008A
是名为
行列表集的不可打印字符(请参阅。)

在UTF-16中,capital-S-with-caron字符位于代码点
0160


如果您想知道字符的Unicode码点,可以通过运行code
“X”.charCodeAt(0).toString(16)
(其中
X
是您要检查的字符)轻松找到它。

您是如何获得这些字符值的?我看到
\u0160
\u0178
\u017d
\u0160
的。我从
“Ž”.charCodeAt(0).toString(16)
(每个字符)中获得了这些值,当我将它们包括在内时,它们就起作用了。从这里开始,我在其他网站上确认了所有的值,所有的值都是相同的。为什么它在JavaScript中有所不同,为什么只针对这3种语言?无论如何,谢谢你的回答。
var subject = "ÀÁÂÃÄÇÈÉÊËÌÍÎÏÑÒÓÔÕÖŠÚÛÜÙÝŸŽ";
if (/[ÀÁÂÃÄÇÈÉÊËÌÍÎÏÑÒÓÔÕÖŠÚÛÜÙÝŸŽ]/i.test(subject)) {
    // Successful match
} else {
    // Match attempt failed
}