如何匹配欧元€;使用八进制、十六进制或unicode元字符登录javascript 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(/

我需要创建在regexp中使用的十六进制和八进制元字符的示例。我在互联网上发现,欧元的八进制代码是
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'));