如何匹配欧元€;使用八进制、十六进制或unicode元字符登录javascript regexp?
我需要创建在regexp中使用的十六进制和八进制元字符的示例。我在互联网上发现,欧元的八进制代码是如何匹配欧元€;使用八进制、十六进制或unicode元字符登录javascript regexp?,javascript,regex,unicode,hex,octal,Javascript,Regex,Unicode,Hex,Octal,我需要创建在regexp中使用的十六进制和八进制元字符的示例。我在互联网上发现,欧元的八进制代码是200,十六进制代码是80,但当我尝试将欧元与regex\200和\x80匹配时,它与欧元符号不匹配。只有unicode元字符\u20AC可以正常工作。我是否有错误的代码,或者无法将欧元符号与oct和十六进制元字符匹配?我以前从未遇到过其他角色的这种问题 var a=“200欧元” console.log(a.search(/\200/g))//-1. console.log(a.search(/
200
,十六进制代码是80
,但当我尝试将欧元与regex\200
和\x80
匹配时,它与欧元符号不匹配。只有unicode元字符\u20AC
可以正常工作。我是否有错误的代码,或者无法将欧元符号与oct和十六进制元字符匹配?我以前从未遇到过其他角色的这种问题
var a=“200欧元”
console.log(a.search(/\200/g))//-1.
console.log(a.search(/\x80/g))//-1.
console.log(a.search(/\u20AC/g))//3
试试这个纯javascript黑客(lalz):
看起来可能是某种虫子
console.log(“欧元符号:\x80”);
console.log(“磅符号:\xA3”)
正如我刚刚发现的,以pound为例,pound的unicode是00A3
或缩写的A3
,可以在javascript正则表达式中用作\u00A3
{四个十六进制数字元字符}或\xA3
{两个十六进制数字元字符}. A3
解析为八进制数的十六进制数等于243
这意味着\243
作为{三个八进制数}元字符也匹配。
。€
的问题是它的unicode是20AC
这意味着它可以用作\u20AC
{四个十六进制数字元字符},但不能缩短为{两个十六进制数字},而不是以00
开头20AC
解析为八进制等于20254
是什么原因导致它不能同时用作{三个八进制数字}
综上所述,只有可以用两位十六进制代码表示的字符才能匹配为\xdd
regexp元字符,只有可以用三位八进制代码表示的字符才能匹配为\ddd
。因此€U+20AC
,❤ <代码>U+2764
,☯ <代码>U+262F
,❄ U+2744
和数千个其他字符只能与javascript中的\udddd
元字符匹配。在Unicode中,欧元符号的代码点是U+20AC,而不是U+0080。有些8位编码使用0x80表示欧元符号,特别是Windows-1252,但这与Unicode无关。在JavaScript中,根本无法将欧元符号与8位十六进制或八进制转义序列相匹配。在您提供的链接中,八进制值是200而不是128。数字8在octal systemcorrected中不是有效值,谢谢您可能是一个bug,它适用于
符号。
var txt = 'This will cost 3€';
console.log(encodeURI(txt).indexOf('%E2%82%AC'));