Appearance
字符的表示
本节目标:理解“字符的表示”的核心思路,并能把它用于实际开发或面试表达。 表示字符的方法有多种,除了可以直接使用字符本身外,还可以使用 ASCII 编码或者 Unicode 编码来表示。 示例****1 下面使用 ASCII 编码定义正则表达式直接量。
**var** r = /\x61/;**var** s = "JavaScript";**var** a = s.match(s);由于字母 a 的 ASCII 编码为 97,被转换为十六进制数值后为 61,因此如果要匹配字符 a,就应该在前面添加“\x”前缀,以提示它为 ASCII 编码。 示例****2 除了十六进制外,还可以直接使用八进制数值表示字符。
**var** r = /\141/;**var** s = "JavaScript";**var** a = s.match(r);使用十六进制需要添加“\x”前缀,主要是为了避免语义混淆,而八进制则不需要添加前缀。 示例****3 ASCII 编码只能够匹配有限的单字节字符,使用 Unicode 编码可以表示双字节字符。Unicode 编码方式:“\u”前缀加上 4 位十六进制值。
**var** r = "/\u0061/";**var** s = "JavaScript";**var** a = s.match(s);在 RegExp() 构造函数中使用元字符时,应使用双斜杠。**var** r = **new** RegExp("\\u0061");RegExp() 构造函数的参数只接受字符串,而不是字符模式。在字符串中,任何字符加反斜杠还表示字符本身,如字符串“\u”就被解释为 u 本身,所以对于“\u0061”字符串来说,在转换为字符模式时,就被解释为“u0061”,而不是“\u0061”,此时反斜杠就失去转义功能。解决方法:在字符 u 前面加双反斜杠。
