不匹配特定非标准字符的十六进制或十进制代码的正则表达式
Regular expression not matching particular non standard characters by Hex or decimal code
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);
}
有人知道为什么上面不匹配ŠŸŽ吗?它们是'x8A
, 'x9E
和'x9F
。这三种方法都适用。我还尝试了'u0138
, 'u0159
和'u0158
。
是否有其他方法来匹配它们?
您找到这些字符值的表显示:
下表根据ISO 8859-1,也称为ISO Latin-1。
(注意这个表实际上甚至不是ISO 8859-1,而是它的超集Windows-1252)
ECMAScript 5规范的第2节说
符合本标准的实现应按照Unicode标准解释字符…采用UCS-2或UTF-16作为编码形式,实现级别3。
JavaScript字符总是被视为UTF-16或UCS-2字符。
在Windows-1252中,字符值8A
对应于称为LATIN CAPITAL LETTER S WITH CARON
的字符。在UTF-16中,代码点008A
是名为LINE TABULATION SET
的不可打印字符(参见unicode.org上的008x
范围的PDF)
在UTF-16中,大写s -with-caron字符位于代码点0160
。
如果您想知道一个字符的Unicode代码点,您可以通过运行代码"X".charCodeAt(0).toString(16)
(其中X
是您想要检查的字符)轻松找到它。
我不知道为什么你试图匹配十六进制或十进制而不是文字字符,以下正则表达式适用于我:
var subject = "ÀÁÂÃÄÇÈÉÊËÌÍÎÏÑÒÓÔÕÖŠÚÛÜÙÝŸŽ";
if (/[ÀÁÂÃÄÇÈÉÊËÌÍÎÏÑÒÓÔÕÖŠÚÛÜÙÝŸŽ]/i.test(subject)) {
// Successful match
} else {
// Match attempt failed
}
Regex演示:https://regex101.com/r/fR6uT6/1
相关文章:
- 从桌面读取python文件时高亮显示代码
- 如何将函数包装在函数中以避免代码重复
- 通过单击表单中的按钮,在代码生成中使用javascript生成字母数字代码
- 货币代码为欧元-金额的格式不应包含小数
- Regex代码只允许一个空格
- 如何将屏幕分辨率乘以 80%,然后在代码中使用
- 从var向代码隐藏函数传递值
- 如何动态插入jquery代码
- 如何在php变量中嵌入JQuery代码
- 代码不会验证
- 如何从rails中的代码中删除新行( )
- Angularjs代码未在匿名函数中运行
- 如何做到这一点,使代码在不传递条件后执行函数
- 需要帮助编写在不使用toString的情况下将十进制转换为二进制的代码
- 我不知道此代码中的这些符号是什么意思.十进制到二进制
- 十进制到二进制代码Javascript
- 从Javascript's代码中学习如何在c#中进行十进制按位运算
- 怎么用这个简单的代码得到一个2十进制的答案呢?
- 编程一个二进制到十进制的转换形式——我的代码有什么问题?(JavaScript和HTML5)
- 不匹配特定非标准字符的十六进制或十进制代码的正则表达式