我需要创建在正则表达式中使用的十六进制和八进制元字符的样本。我在网上找到link € 的八进制代码是 200
,十六进制代码是 80
但是当我尝试将 € 与正则表达式 \200
和 \x80< 匹配时
它不匹配 € 符号。只有 unicode 元字符 \u20AC
可以正常工作。我的代码是否有误,或者无法将欧元符号与 oct 和 hex 元字符相匹配?我以前在其他 Angular 色上没有遇到过这种问题。
var a = "200€"
console.log(a.search(/\200/g)); //-1
console.log(a.search(/\x80/g)); //-1
console.log(a.search(/\u20AC/g)); //3
最佳答案
我刚刚发现,以英镑 £
为例,英镑£
的unicode是00A3
或缩短的 A3
可以在 javascript 正则表达式中用作 \u00A3
{四个十六进制数字元字符} 或 \xA3
{两个十六进制数字元字符}。 A3
十六进制数解析为八进制数等于 243
这意味着 \243
也作为 {三个八进制数字} 元字符匹配 £
。 €
的问题是它的 unicode 是 20AC
这意味着它可以用作 \u20AC
{四个十六进制数字元字符} ,但它不能缩短为 {两个十六进制数字},而且它不是以 00
开头。 20AC
解析为八进制等于 20254
是什么原因导致它也不能用作{三个八进制数字}。
综上所述,\xdd
正则元字符只能匹配两位十六进制代码表示的字符,三位八进制代码可以匹配的字符可以匹配为\ddd
。所以 € U+20AC
, ❤ U+2764
, ☯ U+262F
, ❄ U+2744
和数千其他字符只能与 javascript 中的 \udddd
元字符匹配。
关于javascript - 如何将 javascript regexp 中的 Euro € 符号与八进制、十六进制或 unicode 元字符匹配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42544353/