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
}