day-17.3 转义
转义符:
即转义的字符怎么去匹配;
转义的字符:
字符串中可以通过转义符去对一些字符进行转义,以改变在JS语法中原本的含义;比如:
1 var str = "\"\"\n\s\t";//通过转义之后,比如原来字符n在这里通过转义后代表的意思是换行;
| 转义序列 | 字符 |
|---|---|
| \b | 退格 |
| \f | 走纸换页 |
| \n | 换行 |
| \r | 回车 |
| \t | 横向跳格 (Ctrl-I) |
| \' | 单引号 |
| \" | 双引号 |
| \\ | 反斜杠 |
JS里面能对转义内容进行识别判断;比如上述字符串,通过以下判断,返回值是true;
1 var str = "\"\"\n\s\t"; 2 var r1 = //n/; 3 r1.test(str); //true
空格也能直接判断;
1 var str = " "; //输入一个空格; 2 var r1 = / / ;//一个空格的正则对象; 3 var r2 =/ /;//2个空格的正则对象; 4 r1.test(str); //true; 5 r2.test(str);//false;
一些特殊的转义:
\s :匹配所有的空格字符;\S:匹配所有的非空格字符;
即无论几个空格,用/s匹配都为true;
只要字符串里面存在非空格的字符,用/S匹配都为true;
\d:匹配所有数字的字符;\D:匹配所有非数字的字符;
即无论几个数字,用/s匹配都为true;
只要非数字的字符在里面,用/S匹配都为true;
\w:匹配(数字,字母,_) ; \W :上述3种字符外的其他任何所有字符;
字符串里含(数字,字母,_),用/w匹配都为true;
字符串里含以上3种字符之外的字符(比如汉字),用/W匹配都为true;
\b:单词边界;\B:非单词边界;
单词边界:即通过转义\bbeautifule\b包含住的字符为一个单词,其他的除了(数字,字母,_,起始和终止位置)之外的字符都认为是单词边界;
非单词边界:相反
比如如下情况:
1 var a = "today is a beautifulaaaa day ?"; 2 var b = /beautiful/; //由于没有设置单词边界,他会认为不是匹配单词,而是匹配字母,则返回true; 3 console.log(b.test(a)); 4 var c = /\bbeautiful\b/;//由于加了单词边界 beautifuleaaa两边是空格,不属于(数字,字母,_),所以,被认为beautifuleaaa是一个单词,与beautiful 不匹配,输出false; 5 console.log(c.test(a));
符号点 (。)
符号点(。)代表除非转义字(\n,\r,\t)符之外的所有字符;
1 var a = "haha"; 2 var b = /./; 3 console.log(b.test(a));//true
如何匹配所有字符? 可以通过/s /S 、/w /W 、/d /D 这些组合写法去匹配所有字符;
正则表达式对象的转义写法;
任何有自身特殊意义的字符,在正则表达式里都需要转义后才能去匹配,转义写法类似与字符串的转义;
1 var a = "."; 2 var b =/./ //这里也能匹配得到,因为字符串里的字符点,在符号.的所有字符的范围内,所以也会输出true,但不是因为找到点; 3 var c =/\./ //这样才是真正的找到点字符; 4 ---------------------------------- 5 var a ="/"; 6 var b =/\//;//原理一样,要找到字符串中的“/”字符,需要转义,因为/本身有自身的特殊含义,如果直接写///,则会认为注释掉/;
浙公网安备 33010602011771号