浅入javascript正则表达式的规则.
今天在看jQuery源码的时候,到处都是正则的用法,一气之下就狠下心来.重新回顾了一下正则.下面是做的笔记.非常浅的入门.
1 /* 2 i:表示不区分大小写 3 g:表示可以全局配置 4 m:表示可以多行配置 5 */ 6 /* 7 ^:表示从字符串的第一个位置开始匹配 8 */ 9 var result = false; 10 var str = "guoGuo"; 11 var reg = /^gu/; //匹配字符串是否已gu开头 12 result = reg.test(str);//true 13 14 /* 15 $:匹配字符串的尾端 16 */ 17 str = "guoyansi"; 18 reg = /i$/;//是否已i结尾 19 result = reg.test(str); //true 20 /* 21 *:匹配前一个字符0次或多次 22 /a星号/:以a开头开始匹配,如果匹配到a,则返回a,否则返回null 23 /ab星号/:以a开头开始匹配,如果匹配到了a,返回a,匹配到了abbb...返回abbb.... 24 0次:没有b的就匹配a 25 多次:有a,后面不论多少个b,都匹配出来abbb.... 26 */ 27 str = "dadbudabbbbc"; 28 reg = /du*/g; 29 result = str.match(reg); 30 31 /* 32 +:匹配前一个字符一次或多次 33 /a+/:以a开头开始匹配,如果匹配到a,则返回a,否则返回null 34 /ab+/:以a开头开始匹配,如果匹配到了a,并且在a后面匹配到了b,则返回abbb...; 35 1次:表示a后面没有b,就不返回.如果有b则返回ab.有一个b则返回一个b 36 多次:表示a后面没有b,就不返回.如果有b则返回ab.有多个b则返回多个b 37 */ 38 str = "ddadbbbbc"; 39 reg = /ab+/g; 40 result = str.match(reg); 41 /* 42 ?:一般是对前一个字符的0次或1次匹配; 43 0:没有就是0次 44 1:有就匹配一次 45 */ 46 str = "ddabbdbbbbabbc"; 47 reg = /ab?/g; 48 result = str.match(reg); //ab,ab 49 /* 50 ?在星号和+,{},?后面,表示原始匹配的最小次数 51 星号最小次数0; 52 +:最小次数是1 53 */ 54 str = "ddabbdbbbbabbc"; 55 reg = /ab*?/g; 56 result = str.match(reg); //a,a 57 58 reg = /ab+?/g; 59 result = str.match(reg); //ab,ab 60 61 /* 62 .(点号):匹配一个单独的字符 63 */ 64 str = "guoaaaaagio"; 65 reg = /g.o/g; 66 result = str.match(reg); //guo 67 68 /* 69 (xxx):匹配字符串 70 */ 71 str = "guoooooaaaaagjao"; 72 reg = /g(uo*)a/g; 73 result = str.match(reg); //guoooooa 74 75 /* 76 x(?=y):匹配x,并且只有紧跟的后面是y 77 */ 78 str = "guoyansi"; 79 reg = /uo(?=yan)/g; 80 result = str.match(reg); //uo 81 82 /* 83 x(?!y):匹配x,并且紧跟后面的不是y 84 */ 85 86 str = "guoyansi"; 87 reg = /uo(?!yan)/g; 88 result = str.match(reg); //null 89 str = "guoyanuosi"; 90 result = str.match(reg); //uo(后面一个uo) 91 92 reg = /\d+(?!\.)/g; /*匹配数组,*/ 93 str = "54.235"; /*从数字开始匹配,匹配到之后,紧跟着后面的不能是数组*/ 94 result = str.match(reg); //5,235 95 /* 96 \d:匹配数字字符 97 */ 98 reg = /\d/g; 99 str = "123859"; 100 result = str.match(reg); //1,2,3,8,5,9 101 102 /* 103 \D:匹配非数字字符 104 */ 105 str = "abc1hfd8dsv"; 106 reg = /\D/g; 107 result = str.match(reg); //a,b,c,h,f,d,d,s,v 108 109 /* 110 x|y:匹配x或y,如果x,y都匹配上了,返回x 111 */ 112 113 reg = /uo|n/g; 114 str = "nguoyansi"; 115 result = str.match(reg); //n,uo,n(在没有g的情况下,返回n) 116 117 /* 118 {n}匹配前一个字符的n次出现 119 */ 120 str = "tabbcdabbt"; 121 reg = /ab{2}/g; 122 result = str.match(reg); //abb,abb 123 124 /* 125 {n,}匹配前一个字符至少出现n次数 126 */ 127 str = "tabbbbbcdabbt"; 128 reg = /ab{2,}/g; 129 result = str.match(reg); //abbbbb,abb 130 131 /* 132 {n,m}匹配前一个字符至少出现n次,至多出现m次 133 */ 134 str = "tabbbbbbcabbbbbbbdabbt"; 135 reg = /ab{2,4}/g; 136 result = str.match(reg); //abbbbb,abbbb,abb 137 138 str = "tabbbbcabbbbbbbdabbt"; 139 reg = /ab{2,4}c/g; 140 result = str.match(reg); //abbbbc 141 142 /* 143 [xyz]:匹配[]的一个字符,等同于[a-z],只匹配其中的一个字符,如果匹配到多个,则返回null 144 */ 145 str = "abddgacdg"; 146 reg = /a[bc]d/g; 147 result = str.match(reg); //abd,acd(bc连一起,就匹配不到) 148 149 /* 150 [^xyz]:匹配非[]中的一个字符 151 */ 152 str = "abd"; 153 reg = /a[^bc]d/; 154 result = str.match(reg); //null 155 156 str = "afddgatdg"; 157 reg = /a[^bc]d/g; 158 result = str.match(reg); //afd,atd 159 160 /* 161 [\b]:匹配退格键 162 */ 163 164 /* 165 \b:匹配一个词的边界符,例如空格或换行等等,当匹配换行符是,匹配参数m 166 */ 167 reg = /\bc./g; 168 str = "Beijing is ca cbeautiful city"; 169 result = str.match(reg); //ca,cb,ci 170 171 /* 172 \B:代表一个非边界 173 */ 174 reg = /\Bi./g; 175 str = "Beijing is a beautiful city"; 176 result = str.match(reg); //ij,in,if,it 177 178 /* 179 \f:匹配一个换页符 180 */ 181 182 /* 183 \n:匹配一个换行符,因为是换行符,所以要加入参数m 184 */ 185 186 /* 187 \r:匹配回车符 188 */ 189 190 /* 191 \s:匹配空格符 192 */ 193 str = "ab cd t"; 194 reg = /b[\s]c/g; 195 result = str.match(reg); //b c 196 197 /* 198 \S:匹配非空格 199 */ 200 str = "guoy ansiguoyansi"; 201 reg = /y[\S]n/g; 202 result = str.match(reg); //yan 203 204 /* 205 \t:匹配横向的tab 206 */ 207 208 /* 209 \v:匹配竖向的tab 210 */ 211 212 /* 213 \w:匹配数字、_或字母[a-zA-Z0-9] 214 */ 215 str = "g1u中5国ir人_r"; 216 reg = /\w/g; 217 result = str.match(reg); //g,1,u,5,i,r,_,r 218 219 /* 220 \W:匹配飞数字、_或字母[^a-zA-Z0-9] 221 */ 222 str = "g1u中5国ir人_r"; 223 reg = /\W/g; 224 result = str.match(reg); //中,国,人