Javascript高级程序设计——9.正则表达式(1)
1、正則表達式
(1)定義:描述字符模式的對象
ECMAScript的RegExp類表示正則表達式
(2)作用:驗證客戶端的輸入函數,即在用戶填寫完表單單擊按鈕后,表單被發送到服務器,在服務器端通 ? ? ??常用php,asp.net語言對其進行進一步的驗證。
2、創建正則表達式(2種)
(1)new關鍵字
(2)采用字面量方式(打印出來的為字面量)
var box=new RegExp('Box'); //第一個參數是模式字符串; alert(box); //結果——"/Box/" //兩個反斜杠就是正則表達式字面量表示方法;var box=new RegExp('Box','gi'); //第二個參數為可選; alert(box);
(3)模式修飾符(可選參數)
a、i——忽略大小寫
b、g——全局匹配
c、m——多行匹配
var box='/Box/'; alert(box);
3、測試正則表達式
A、RegExp
2種:test()/exec()
結果——均返回布爾值true、false
(1)test():用于匹配字符串
var pattern=new RegExp('Box'); //模式; var str='box'; alert(pattern.test(str)); 結果:false,由于大小寫不一致
var pattern=new RegExp('Box','i'); //不區分大小寫; var str='box'; alert(pattern.test(str)); 結果:true,一句話匹配
var pattern=/Box/i; //使用字面量方式 var str='box'; alert(pattern.test(str)); 結果:true
(2)exec():用于匹配數組
(若匹配到,則返回數組;若沒匹配到,返回null)
var pattern=/Box/i; //使用字面量方式 var str='sss'; alert(pattern.test(str)); 結果:如果沒匹配到,返回null
B、String對象
4種:match()——返回pattern中子串或null
? ? ?replace()——用新元素替換舊元素
? ? ?search()——返回字符串中開始的位置
? ? ?split()——返回字符串按指定pattern拆分的數組
(1)match()獲取數組
a、ig:全局
b、i:不是全局
var pattern=/Box/i; //沒有開啟全局搜索; var str='This is a Box!This is a Box!';alert(str.match(pattern)); //匹配到第一個字符串返回數組;
(2)search查找匹配數組
var pattern=/xox/i; //沒有開啟全局搜索; var str='This is a Box!This is a Box!';alert(str.search(pattern)); //找不到匹配,返回-1;
(3)replace替換數組
var pattern=/Box/i; //沒有開啟全局搜索; var str='This is a Box!This is a Box!';alert(str.replace(pattern,'Tom')); //返回替換的字符串,只替換了第一個;
var pattern=/Box/ig; //全局搜索; var str='This is a Box!This is a Box!'; alert(str.replace(pattern,'Tom')); //返回替換的字符串,替換了兩個;
(4)split表示拆分數組
4、RegExp屬性
(1)靜態屬性
var pattern=/(g)oogle/; var str='This is google'; pattern.test(str); //執行一下; alert(RegExp.input); //This is google! alert(RegExp.leftContext); //This is alert(RegExp.rightContext); //! alert(RegExp.lastMatch); //goole;(匹配最后一個) alert(RegExp.lastParen); //g
(2)實例屬性
google:全局ignoreCase:區分大小寫
lastIndex:上次匹配位置
5、獲取控制
(1)定義:正則表達式中的元字符是包含特殊含義的字符。
? ? ? ? (2)元字符可以控制匹配模式的方式,反斜杠后的元字符將失去其特殊含義
a、字符類
(1)單個字符或數字
.:點符號表示匹配除換行符外的任意字符
var pattern=/g..gle/; var str='google'; alert(pattern.test(str));
(2)重復字符
x*:星號*表示前邊那個字符x重復的0個或多個
x+:星號+表示前邊那個字符x重復的1個或多個
x.?:問號.?表示前邊的字符x重復的0個或1個
x{a,b}:{a,b}表示匹配前邊的字符x重復(a,b)次
var pattern=/go{2,4}gle/; var str='gooole'; alert(pattern.test(str)); //truevar pattern=/go{3}gle/; //o{3}表示限定為3個 var str='goooole'; alert(pattern.test(str)); //true
var pattern=/go{3,}gle/; //o{3,}表示限定為3個及3個以上 var str='goooole'; alert(pattern.test(str)); //true
(3)單個字符
[a-z]:表示26個小寫字母,任意一個都可以匹配
[A-Z]:表示26個大寫字母,任意一個都可以匹配
(注意://i有i時,不限定大小寫,為true)
var pattern=/[a-z]oogle/i; //[a-z]表示匹配小寫,有i后綴表示可不區分大小寫 var str='Goole'; alert(pattern.test(str)); //true,大寫G,由于有后綴i組合類型1——[a-zA-Z0-9]表示匹配括號中大小寫的a-z、A-Z、0-9 var pattern=/[a-zA-Z0-9]oogle/; var str='google'; alert(pattern.test(str)); //true
組合類型2——^[a-zA-Z0-9]表示匹配任意不在括號里大小寫的a-z、A-Z、0-9
b、數字: (1)簡單的[0-9] [0-9]:表示匹配0-9的10個數字 var pattern=/[0-9]oogle/; //[0-9]表示匹配數字0-9 var str='6oole'; alert(pattern.test(str)); //true
(2)^、* ^表示非,*表示任意——以[^0-9]*為例 var pattern=/[^0-9*]oogle/; //[^0-9*]表示匹配任意個非數字0-9 var str='google'; alert(pattern.test(str)); //true
(3)小寫為正,大寫為非 \d:匹配數字 \D:匹配非數字,同[^0-9]相同
\w:匹配字母、數字及_ \W:匹配非字母、數字及_
c、數字+字符組合類型 組合類型1——[a-zA-Z0-9]表示匹配括號中大小寫的a-z、A-Z、0-9 var pattern=/[a-zA-Z0-9]oogle/; var str='google'; alert(pattern.test(str)); //true
組合類型2——^[a-zA-Z0-9]表示匹配任意不在括號里大小寫的a-z、A-Z、0-9
組合類型3——/^[a-z]oole[0-9]$/表示以a-z開頭,以0-9結尾 var pattern=/^[a-z]oole[0-9]$/; var str='google'; alert(pattern.test(str)); //true
d、元字符 (1)\b:表示到達邊界 (2)\|:表示匹配或選擇模式
e、分組的概念 (1)單個字符 var pattern=/google{4,8}$/; //表示e重復4-8次 var str='googleeeee'; alert(pattern.test(str));
(2)字符串分組后,當成一個字符 var pattern=/(google){4,8}$/; //分組,將google看成一個字符; var str='googlegooglegooglegoogle'; alert(pattern.test()); //true
(3)RegExp.$1表示匹配模式中第一個分組對應的匹配字符串var pattern=/8(.*)8/; var str='This is a 8google8'; document.write(str.replace(pattern,'<strong>$1</strong>'));
f、貪婪模式+懶惰模式 (1)貪婪模式:“+” var pattern=/[a-z]+/; //+號表示使用了貪婪模式; var str='asdf'; alert(pattern.test(str)); //所有字符串都變成了1;
(2)懶惰模式:“+?” var pattern=/[a-z]+?/; //+?號表示使用了惰性模式; var str='asdf'; alert(pattern.test(str)); //只有第一個字符串都變成了1;
(3)應用:運用貪婪var pattern=/8(.*)8/; var str='8google8 8google8 8google8'; document.write(str.replace(pattern,'<strong>$1</strong>'));結果:<strong>google8 8google8 8google</strong>
(4)禁止貪婪var pattern=/8(.*?)8/; //運用了惰性 var str='8google8 8google8 8google8'; document.write(str.replace(pattern,'<strong>$1</strong>'));結果:<strong>google</strong> <strong>google</strong>
<strong>google</strong>
總結
以上是生活随笔為你收集整理的Javascript高级程序设计——9.正则表达式(1)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 加息对股市影响利好还是利空
- 下一篇: pid倒立摆matlab,基于MATLA