094_正则表达式
1. 什么是正則表達式?
1.1. 正則表達式是構成搜索模式(search pattern)的字符序列。
1.2. 當您搜索文本中的數據時, 您可使用搜索模式來描述您搜索的內容。
1.3. 正則表達式可以是單字符或者更復雜的模式。
1.4. 正則表達式可用于執行所有類型的文本搜索和文本替換操作。
1.5. 語法
/pattern/modifiers;2. 正則表達式修飾符
3. 方括號
3.1. 方括號用于查找某個范圍內的字符:
?4. 量詞
5. 元字符
5.1. 元字符(Metacharacter)是擁有特殊含義的字符:
6. 支持正則表達式的String對象的方法
7. 修飾符例子
7.1. 代碼
<!DOCTYPE html> <html><head><meta charset="utf-8" /><title>修飾符</title></head><body><script type="text/javascript">var str1 = 'He nan ruan jian bao dian ke ji you xian gong si。Ta wei yu he nan sheng zheng zhou shi。Ta zhu yao jing ying hu lian wang zai xian jiao yu、hu lian wang dian shang he hu lian wang you xi deng deng。Ta xian zai zhu yao de chan pin shi ruan jian bao dian wang、he nan shang cheng、shou ji nong chang Unity you xi he shou ji xiao xiao le Unity you xi deng deng。Ruan jian bao dian wang mu qian yi jing fu wu yu 100 duo suo he nan gao xiao, 200000 duo wan de gao xiao xue sheng he lao shi, yi gong you 30 duo wan yong hu le。He nan';document.write('<b style="color: green;">' + str1.replace(/he nan/g, '<i style="color: red;">he nan</i>').replace(/He nan/g, '<i style="color: red;">He nan</i>') + '</b><br /><br />');var r1 = str1.match(/he nan/);var r2 = str1.match(/he nan/i);var r3 = str1.match(/he nan/m);var r4 = str1.match(/he nan/g);var r5 = str1.match(/he nan/im);var r6 = str1.match(/he nan/ig);var r7 = str1.match(/he nan/mg);var r8 = str1.match(/he nan/img);document.write('<b>匹配模式是: /he nan/</b>, 匹配結果: ' + r1 + '<br />');document.write('<b>匹配模式是: /he nan/i</b>, 匹配結果: ' + r2 + '<br />');document.write('<b>匹配模式是: /he nan/m</b>, 匹配結果: ' + r3 + '<br />');document.write('<b>匹配模式是: /he nan/g</b>, 匹配結果: ' + r4 + '<br />');document.write('<b>匹配模式是: /he nan/im</b>, 匹配結果: ' + r5 + '<br />');document.write('<b>匹配模式是: /he nan/ig</b>, 匹配結果: ' + r6 + '<br />');document.write('<b>匹配模式是: /he nan/mg</b>, 匹配結果: ' + r7 + '<br />');document.write('<b>匹配模式是: /he nan/img</b>, 匹配結果: ' + r8 + '<br /><br />');var r9 = str1.match(/^he nan/);var r10 = str1.match(/^he nan/i);var r11 = str1.match(/^he nan/m);var r12 = str1.match(/^he nan/g);var r13 = str1.match(/^he nan/im);var r14 = str1.match(/^he nan/ig);var r15 = str1.match(/^he nan/mg);var r16 = str1.match(/^he nan/img);document.write('<b>匹配模式是: /^he nan/</b>, 匹配結果: ' + r9 + '<br />');document.write('<b>匹配模式是: /^he nan/i</b>, 匹配結果: ' + r10 + '<br />');document.write('<b>匹配模式是: /^he nan/m</b>, 匹配結果: ' + r11 + '<br />');document.write('<b>匹配模式是: /^he nan/g</b>, 匹配結果: ' + r12 + '<br />');document.write('<b>匹配模式是: /^he nan/im</b>, 匹配結果: ' + r13 + '<br />');document.write('<b>匹配模式是: /^he nan/ig</b>, 匹配結果: ' + r14 + '<br />');document.write('<b>匹配模式是: /^he nan/mg</b>, 匹配結果: ' + r15 + '<br />');document.write('<b>匹配模式是: /^he nan/img</b>, 匹配結果: ' + r16 + '<br /><br />');var r17 = str1.match(/he nan$/);var r18 = str1.match(/he nan$/i);var r19 = str1.match(/he nan$/m);var r20 = str1.match(/he nan$/g);var r21 = str1.match(/he nan$/im);var r22 = str1.match(/he nan$/ig);var r23 = str1.match(/he nan$/mg);var r24 = str1.match(/he nan$/img);document.write('<b>匹配模式是: /he nan$/</b>, 匹配結果: ' + r17 + '<br />');document.write('<b>匹配模式是: /he nan$/i</b>, 匹配結果: ' + r18 + '<br />');document.write('<b>匹配模式是: /he nan$/m</b>, 匹配結果: ' + r19 + '<br />');document.write('<b>匹配模式是: /he nan$/g</b>, 匹配結果: ' + r20 + '<br />');document.write('<b>匹配模式是: /he nan$/im</b>, 匹配結果: ' + r21 + '<br />');document.write('<b>匹配模式是: /he nan$/ig</b>, 匹配結果: ' + r22 + '<br />');document.write('<b>匹配模式是: /he nan$/mg</b>, 匹配結果: ' + r23 + '<br />');document.write('<b>匹配模式是: /he nan$/img</b>, 匹配結果: ' + r24 + '<br /><br />');var r25 = str1.match(/^he nan$/);var r26 = str1.match(/^he nan$/i);var r27 = str1.match(/^he nan$/m);var r28 = str1.match(/^he nan$/g);var r29 = str1.match(/^he nan$/im); // m在多行匹配的行首和行尾匹配中顯得特別有用var r30 = str1.match(/^he nan$/ig);var r31 = str1.match(/^he nan$/mg);var r32 = str1.match(/^he nan$/img);document.write('<b>匹配模式是: /^he nan$/</b>, 匹配結果: ' + r25 + '<br />');document.write('<b>匹配模式是: /^he nan$/i</b>, 匹配結果: ' + r26 + '<br />');document.write('<b>匹配模式是: /^he nan$/m</b>, 匹配結果: ' + r27 + '<br />');document.write('<b>匹配模式是: /^he nan$/g</b>, 匹配結果: ' + r28 + '<br />');document.write('<b>匹配模式是: /^he nan$/im</b>, 匹配結果: ' + r29 + '<br />');document.write('<b>匹配模式是: /^he nan$/ig</b>, 匹配結果: ' + r30 + '<br />');document.write('<b>匹配模式是: /^he nan$/mg</b>, 匹配結果: ' + r31 + '<br />');document.write('<b>匹配模式是: /^he nan$/img</b>, 匹配結果: ' + r32 + '<hr />');var str2 = 'He nan ruan jian bao dian ke ji you xian gong si。Ta wei yu\r\nhe nan sheng zheng zhou shi。Ta zhu yao jing ying hu lian wang zai xian jiao yu、hu lian wang dian shang he hu lian wang you xi deng deng。\r\nTa xian zai zhu yao de chan pin shi ruan jian bao dian wang、he nan\r\nshang cheng、shou ji nong chang Unity you xi he shou ji xiao xiao le Unity you xi deng deng。Ruan jian bao dian wang mu qian yi jing fu wu yu 100 duo suo he nan\r\ngao xiao, 200000 duo wan de gao xiao xue sheng he lao shi, yi gong you 30 duo wan yong hu le。\r\nHe nan';document.write('<b style="color: green;">' + str2.replace(/\r\n/g, '<br />').replace(/he nan/g, '<i style="color: red;">he nan</i>').replace(/He nan/g, '<i style="color: red;">He nan</i>') + '</b><br /><br />');r1 = str2.match(/he nan/);r2 = str2.match(/he nan/i);r3 = str2.match(/he nan/m);r4 = str2.match(/he nan/g);r5 = str2.match(/he nan/im);r6 = str2.match(/he nan/ig);r7 = str2.match(/he nan/mg);r8 = str2.match(/he nan/img);document.write('<b>匹配模式是: /he nan/</b>, 匹配結果: ' + r1 + '<br />');document.write('<b>匹配模式是: /he nan/i</b>, 匹配結果: ' + r2 + '<br />');document.write('<b>匹配模式是: /he nan/m</b>, 匹配結果: ' + r3 + '<br />');document.write('<b>匹配模式是: /he nan/g</b>, 匹配結果: ' + r4 + '<br />');document.write('<b>匹配模式是: /he nan/im</b>, 匹配結果: ' + r5 + '<br />');document.write('<b>匹配模式是: /he nan/ig</b>, 匹配結果: ' + r6 + '<br />');document.write('<b>匹配模式是: /he nan/mg</b>, 匹配結果: ' + r7 + '<br />');document.write('<b>匹配模式是: /he nan/img</b>, 匹配結果: ' + r8 + '<br /><br />');r9 = str2.match(/^he nan/);r10 = str2.match(/^he nan/i);r11 = str2.match(/^he nan/m);r12 = str2.match(/^he nan/g);r13 = str2.match(/^he nan/im);r14 = str2.match(/^he nan/ig);r15 = str2.match(/^he nan/mg);r16 = str2.match(/^he nan/img);document.write('<b>匹配模式是: /^he nan/</b>, 匹配結果: ' + r9 + '<br />');document.write('<b>匹配模式是: /^he nan/i</b>, 匹配結果: ' + r10 + '<br />');document.write('<b>匹配模式是: /^he nan/m</b>, 匹配結果: ' + r11 + '<br />');document.write('<b>匹配模式是: /^he nan/g</b>, 匹配結果: ' + r12 + '<br />');document.write('<b>匹配模式是: /^he nan/im</b>, 匹配結果: ' + r13 + '<br />');document.write('<b>匹配模式是: /^he nan/ig</b>, 匹配結果: ' + r14 + '<br />');document.write('<b>匹配模式是: /^he nan/mg</b>, 匹配結果: ' + r15 + '<br />');document.write('<b>匹配模式是: /^he nan/img</b>, 匹配結果: ' + r16 + '<br /><br />');r17 = str2.match(/he nan$/);r18 = str2.match(/he nan$/i);r19 = str2.match(/he nan$/m);r20 = str2.match(/he nan$/g);r21 = str2.match(/he nan$/im);r22 = str2.match(/he nan$/ig);r23 = str2.match(/he nan$/mg);r24 = str2.match(/he nan$/img);document.write('<b>匹配模式是: /he nan$/</b>, 匹配結果: ' + r17 + '<br />');document.write('<b>匹配模式是: /he nan$/i</b>, 匹配結果: ' + r18 + '<br />');document.write('<b>匹配模式是: /he nan$/m</b>, 匹配結果: ' + r19 + '<br />');document.write('<b>匹配模式是: /he nan$/g</b>, 匹配結果: ' + r20 + '<br />');document.write('<b>匹配模式是: /he nan$/im</b>, 匹配結果: ' + r21 + '<br />');document.write('<b>匹配模式是: /he nan$/ig</b>, 匹配結果: ' + r22 + '<br />');document.write('<b>匹配模式是: /he nan$/mg</b>, 匹配結果: ' + r23 + '<br />');document.write('<b>匹配模式是: /he nan$/img</b>, 匹配結果: ' + r24 + '<br /><br />');r25 = str2.match(/^he nan$/);r26 = str2.match(/^he nan$/i);r27 = str2.match(/^he nan$/m);r28 = str2.match(/^he nan$/g);r29 = str2.match(/^he nan$/im);r30 = str2.match(/^he nan$/ig);r31 = str2.match(/^he nan$/mg);r32 = str2.match(/^he nan$/img);document.write('<b>匹配模式是: /^he nan$/</b>, 匹配結果: ' + r25 + '<br />');document.write('<b>匹配模式是: /^he nan$/i</b>, 匹配結果: ' + r26 + '<br />');document.write('<b>匹配模式是: /^he nan$/m</b>, 匹配結果: ' + r27 + '<br />');document.write('<b>匹配模式是: /^he nan$/g</b>, 匹配結果: ' + r28 + '<br />');document.write('<b>匹配模式是: /^he nan$/im</b>, 匹配結果: ' + r29 + '<br />');document.write('<b>匹配模式是: /^he nan$/ig</b>, 匹配結果: ' + r30 + '<br />');document.write('<b>匹配模式是: /^he nan$/mg</b>, 匹配結果: ' + r31 + '<br />');document.write('<b>匹配模式是: /^he nan$/img</b>, 匹配結果: ' + r32);</script></body> </html>7.2. 效果圖
8. 括號例子
8.1. 代碼
<!DOCTYPE html> <html><head><meta charset="utf-8" /><title>括號</title></head><body><script type="text/javascript">var str1 = 'Ruan jian bao dian wang fu wu yu 100 duo suo gao xiao, 200000 duo wan de gao xiao xue sheng he lao shi, yi gong you 30 duo wan yong hu le。';var r1 = str1.match(/[0-9A-Za-z]/);var r2 = str1.match(/[^0-9A-Za-z]/);var r3 = str1.match(/(gao xiao)/);var r4 = str1.match(/(gao xiao|bao dian)/);var r5 = str1.match(/(gao xiao)/g);var r6 = str1.match(/(gao xiao|bao dian)/g);document.write('匹配結果: ' + r1 + '<br />匹配位置: ' + r1.index + '<br />匹配(查找)的字符串: ' + r1.input + '<hr />');document.write('匹配結果(是一個空格): ' + r2 + '<br />匹配位置: ' + r2.index + '<br />匹配(查找)的字符串: ' + r2.input + '<hr />');document.write('匹配結果: ' + r3[0] + '<br />匹配的正則表達式的子表達式: ' + r3[1] + '<br />匹配位置: ' + r3.index + '<br />匹配(查找)的字符串: ' + r3.input + '<hr />');document.write('匹配結果: ' + r4[0] + '<br />匹配的正則表達式的子表達式: ' + r4[1] + '<br />匹配位置: ' + r4.index + '<br />匹配(查找)的字符串: ' + r4.input + '<hr />');document.write('匹配結果: ' + r5 + '<br />');document.write('匹配結果: ' + r6 + '<hr />');var r7 = str1.replace(/[1-9]0+/, '5');var r8 = str1.replace(/[1-9]0*/, '5');var r9 = str1.replace(/[1-9]0?/, '5');document.write('匹配結果: ' + r7 + '<br />');document.write('匹配結果: ' + r8 + '<br />');document.write('匹配結果: ' + r9 + '<hr />');var r10 = str1.replace(/[1-9]0+/, '$&');var r11 = str1.replace(/[1-9]0*/, '$`');var r12 = str1.replace(/[1-9]0?/, "$'");document.write('使用與正則表達式匹配的字符串替換匹配字符串結果: ' + r10 + '<br />');document.write('使用與正則表達式匹配的左側字符串替換匹配字符串結果: ' + r11 + '<br />');document.write('使用與正則表達式匹配的右側字符串替換匹配字符串結果: ' + r12 + '<hr />');var r13 = str1.replace(/(\s|\w)*(1|2|3)0*(\s|\w|,)*(1|2|3)0*(\s|\w|,)*(1|2|3)0*(\s|\w)*/g, '$1');var r14 = str1.replace(/(\s|\w)*(1|2|3)0*(\s|\w|,)*(1|2|3)0*(\s|\w|,)*(1|2|3)0*(\s|\w)*/g, '$2');var r15 = str1.replace(/(\s|\w)*(1|2|3)0*(\s|\w|,)*(1|2|3)0*(\s|\w|,)*(1|2|3)0*(\s|\w)*/g, '$3');var r16 = str1.replace(/(\s|\w)*(1|2|3)0*(\s|\w|,)*(1|2|3)0*(\s|\w|,)*(1|2|3)0*(\s|\w)*/g, '$4');var r17 = str1.replace(/(\s|\w)*(1|2|3)0*(\s|\w|,)*(1|2|3)0*(\s|\w|,)*(1|2|3)0*(\s|\w)*/g, '$5');var r18 = str1.replace(/(\s|\w)*(1|2|3)0*(\s|\w|,)*(1|2|3)0*(\s|\w|,)*(1|2|3)0*(\s|\w)*/g, '$6');var r19 = str1.replace(/(\s|\w)*(1|2|3)0*(\s|\w|,)*(1|2|3)0*(\s|\w|,)*(1|2|3)0*(\s|\w)*/g, '$7');document.write('匹配結果: ' + r13 + '<br />');document.write('匹配結果: ' + r14 + '<br />');document.write('匹配結果: ' + r15 + '<br />');document.write('匹配結果: ' + r16 + '<br />');document.write('匹配結果: ' + r17 + '<br />');document.write('匹配結果: ' + r18 + '<br />');document.write('匹配結果: ' + r19 + '<br />');var r20 = str1.replace(/(\s|\w)*(1|2|3)0*(\s|\w|,)*(1|2|3)0*(\s|\w|,)*(1|2|3)0*(\s|\w)*/g, function(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10){document.write('與正則表達式匹配的字符串: ' + p1 + '<br />');document.write('第一個匹配的位置: ' + p9 + '<br />');document.write('原字符串: ' + p10 + '<br />');return 'nima';});document.write('匹配結果: ' + r20 + '<br />');</script></body> </html>8.2. 效果圖
9. 元字符例子
9.1. 代碼
<!DOCTYPE html> <html><head><meta charset="utf-8" /><title>元字符</title></head><body><script type="text/javascript">var str1 = 'Ruan jian bao dian wang fu wu yu 100 duo suo gao xiao 200000 duo wan de gao xiao xue sheng he lao shi yi gong you 30 duo wan yong hu le。';// search()方法不執行全局匹配, 它將忽略標志g。var r1 = str1.search(/0{2}/);document.write('匹配位置: ' + r1 + '<br />');var r2 = str1.search(/0{3,6}/);document.write('匹配位置: ' + r2 + '<br />');var r3 = str1.search(/0{4,}/);document.write('匹配位置: ' + r3 + '<hr />');var r4 = str1.match(/(gao xiao)(?=(\sxue sheng))/);document.write('匹配字符: ' + r4[0] + ' 匹配位置: ' + r4.index + '<br />');document.write('存儲的子表達式匹配結果: [' + RegExp.$1 + '], [' + RegExp.$2 + '], [' + RegExp.$3 + ']<br /><br />');var r5 = str1.match(/(gao xiao)(?!( xue sheng))/);document.write('匹配字符: ' + r5[0] + ' 匹配位置: ' + r5.index + '<br />');document.write('存儲的子表達式匹配結果: [' + RegExp.$1 + '], [' + RegExp.$2 + '], [' + RegExp.$3 + ']<hr />');var r8 = '+-*/\n123\rabc'.match(/./g);document.write(r8 + '<hr />');var r9 = str1.split(/\w{6,}/g);document.write(r9 + '<br />');var r10 = str1.split(/\W/g, 5);document.write(r10 + '<br />');var r11 = str1.split(/\d+/g);document.write(r11 + '<br />');var r12 = str1.split(/\s/g, 5);document.write(r12 + '<br />');var r13 = str1.split(/\b\s\b/);document.write(r13 + '<hr />');var r14 = '1\v2'.search(/\s/);document.write('\\s匹配垂直制表符的位置: ' + r14 + '<br />');var r15 = '1\f2'.search(/\s/);document.write('\\s匹配換頁符的位置: ' + r15 + '<br />');var r16 = '1\t2'.search(/\s/);document.write('\\s匹配制表符的位置: ' + r16 + '<br />');var r17 = '1\r2'.search(/\s/);document.write('\\s匹配回車符的位置: ' + r17 + '<br />');var r18 = '1\n2'.search(/\s/);document.write('\\s匹配換行符的位置: ' + r18 + '<br />');var r19 = '1 2'.search(/\s/);document.write('\\s匹配空格的位置: ' + r19 + '<br />');var r20 = '1 2'.search(/\s/);document.write('\\s匹配tab鍵的位置: ' + r20 + '<hr />');var r21 = str1.match(/\b/);document.write('匹配字符: ' + r21[0] + ' 匹配位置: ' + r21.index + '<br />');var r22 = 'School MySchool'.match(/\BSchool/);document.write('匹配字符: ' + r22[0] + ' 匹配位置: ' + r22.index + '<br />');var r23 = str1.match(/\u3002/);document.write('匹配字符: ' + r23[0] + ' 匹配位置: ' + r23.index + '<br />');</script></body> </html>9.2. 效果圖
總結
 
                            
                        - 上一篇: 052_Function对象
- 下一篇: 095_RegExp对象
