一只懒虫 2019-06-29
1、正则表达式的组合
正则表达式由元字符和转义字符组成元字符有
转义字符有
\f
换页(FF),将当前位置移到下页开头 十进制码是:012,八进制码是:\014,十六进制是:\x0e
\n
换行(LF) ,将当前位置移到下一行开头 十进制码是:010,八进制码是:\012,十六进制是:\x0c
\r
回车(CR) ,将当前位置移到本行开头 十进制码是:013,八进制码是:\015,十六进制是:\x0d
\t
水平制表(HT) (跳到下一个TAB位置) 十进制码是:009,八进制码是:\011,十六进制是:\x09
\\
代表一个反斜线字符'\' 十进制码是:092,八进制码是:\134,....
\'
代表一个单引号(撇号)字符 十进制码是:039,八进制码是:\047
\"
代表一个双引号字符 十进制码是:034,八进制码是:\042
\?
代表一个问号 十进制码是:063,八进制码是:\077
\0
空字符(NUL) 十进制码是:000,八进制码是:\000
2、ASCII码
我们知道,计算机内部,所有信息最终都是一个二进制值。每一个二进制位(bit)有0和1两种状态,因此八个二进制位就可以组合出256种状态,这被称为一个字节(byte)。也就是说,一个字节一共可以用来表示256种不同的状态,每一个状态对应一个符号,就是256个符号,从00000000到11111111。
上个世纪60年代,美国制定了一套字符编码,对英语字符与二进制位之间的关系,做了统一规定。这被称为 ASCII 码,一直沿用至今。
ASCII 码一共规定了128个字符的编码,比如空格SPACE是32(二进制00100000),大写的字母A是65(二进制01000001)。这128个符号(包括32个不能打印出来的控制符号),只占用了一个字节的后面7位,最前面的一位统一规定为0。
\x表示后面的字符是十六进制数,\0表示后面的字符是八进制数。
所有的ASCII码都可以用“”加数字(一般是8进制数字)来表示。而C中定义了一些字母前加""来表示常见的那些不能显示的ASCII字符,如0,t,n等部分特殊字符,就称为转义字符,因为后面的字符,都不是八进制数字了,所以也就不是ASCII字符意思了,算定义的一些特殊字符来表示吧。
常用的ASCII码
其实ASCII中的转义字符和正则中的转义字符是同一样东西,都是特殊意义的字符,也算对ASCII中一些特殊字 符或不能显示的字符的定义或别称。因为ASCII的应用场景可以是任何地方,所以转义字符也可以用于正则匹配中,甚至可以将对转义字符或匹配规则中非元字符的字符用八进制或十六进制的编码转换后用于正则匹配中,哈哈
例子:/\141/.test("acdf"); ->true 匹配"a"
/\134/.test("a\\f"); ->true 匹配"\"
/[\141-z]/.test("a141"); ->true 匹配a-z中的任意一个字符
/b\077/.test("a"); ->true 匹配是否有b或没有字符 "\077" === "?" ->true
"a" > "A" ->true 相当于 97 > 65 也相当于 "\141" > "\101" 也相当于 "\x61" > "\x41"
"a" > "'" ->true 相当于 97 > 39 也相当于 "\141" > "\047"
等等其他匹配
最后在讲讲其他具体编程语言中转义字符串具体编程语言中有一些特殊标志字符,会当成编程语言中的标志符号来识别,所以需要转义字符来识别,例如:如HTML转义符、java 转义符、xml 转义符、 oracle 转义符、sql 转义符 、sqlserver 转义符、php 转义符、asp 转义符、vb转义符、 javascript 转义符等等,还有网址中的百分号。作用环境当然是对应的编程语言中。
转义字符串(Escape String),即字符实体(Character Entity)分成三部分:第一部分是一个&符号,英文叫ampersand;第二部分是实体(Entity)名字或者是#加上实体(Entity)编号;第三部分是一个分号。
例如 HTML中的 > < © & " 空格 -> ><©&" 例如url中的 空格,?,+,\,&.... -> (十六进制的)%20 %3F %2B %5C %26当然也可以用第二块的ASCII中八进制或十六进制码 encodeURIComponent(" ")-> %20 encodeURIComponent("?")-> %3F encodeURIComponent("\077")-> %3F .... decodeURIComponent("%3F")-> "?" decodeURIComponent("\077")-> "?" decodeURIComponent("%5C")-> "\" decodeURIComponent("\134")-> "\" 此处想说ASCII码真的是随处可用
详细可参考HTML转义字符对照表
总结: