javascript
JS正则表达式的基础用法
RegExp(正則表達(dá)式)對(duì)象
正則表達(dá)式是一個(gè)描述字符模式的對(duì)象,可以處理更復(fù)雜的字符串。進(jìn)行匹配替換。
常用的修飾符:
i/m/g
使用方法:
【聲明方法一: new RegExp(value)】
var patt = new RegExp(value);【value】中放入想要檢查的值
var res = patt.test("this is javascript course"); 檢測(cè)這段話中是否存在【value】中的值,返回值為boolean類型。
【聲明方法二: var patt = /value/】
var patt = /value/i :i表示不區(qū)分大小寫(xiě)
【test()函數(shù):檢測(cè)字符串中是否存在正則表達(dá)式模式對(duì)應(yīng)的匹配,返回類型為布爾類型】
參數(shù):string指定的字符串。
注意:每次執(zhí)行test()函數(shù),都只查找最多一次匹配,找到返回true,否則false。
【方括號(hào)用于查找某個(gè)范圍內(nèi)的值:/[value]/】
var res =/[abc]/.test("def") 返回值:如果test("value")中的值【存在】于/[abc]/中則返回true,否則false
【^符號(hào)表示查找不再該范圍內(nèi)的任何值/[^value/]】
var res =/[^abc]/.test("def") 返回值:如果test("value")中的值【不存在】于/[abc]/中則返回true,否則false
【元字符:它的邏輯是或邏輯,只要一個(gè)為真結(jié)果就為真】
【查找單個(gè)字符,除了換行和行結(jié)束符:/./】
例子:
res = /./.test("\n"); 返回false
res = /./.test("this is a test\n") 返回true
【查找單詞字符:\w 小寫(xiě)】
例子:
res = /\w/.test("!#@"); 返回false,因?yàn)閠est("value")中不包含單詞字符【a-zA-Z0-9】
【查找非單詞字符:\W 大寫(xiě)】
例子:
res = /\W/.test("!#@abc"); 返回true,因?yàn)閠est("value")中包含了非單詞字符,它的邏輯是或邏輯,只要一個(gè)為真結(jié)
果就為真。
【查找空白字符:\s 】
例子:
res=/\s/.test('hello world');
【查找非空白字符:\S 】
例子:
res=/\S/.test(" ");
【匹配單詞邊界:\b 單詞邊界指的是一個(gè)單詞的左右兩邊,開(kāi)始和結(jié)束】
例子: 通常不要兩邊都寫(xiě)
res = /\bValue/.test('good');返回true value在\b后面表示后面的值是否在最左邊
res = /value\b/.test('good');返回true value在\b前面表示前面的值是否在最右邊
【匹配非單詞邊界:\B 單詞邊界指的是一個(gè)單詞的左右兩邊,開(kāi)始和結(jié)束】
例子:value的值在\B的左右兩邊無(wú)所謂
res = /o\b/.test('good');返回true 因?yàn)閛這個(gè)值不再test字符串的兩邊
【量詞 -*/?】
【/value : 表示value中的值,匹配至少一次或多次】
例子:
res=/o /.test('google');
【/value*:* 表示value中的值,匹配>=0次】
例子:
res=/o*/.test('google');
【/value?:? 表示value中的值,匹配零次或一次】
例子:
res=/o?/.test('google');
【/^value/: ^ 不加方括號(hào),表示value的值,在test中是否是第一位,是則返回true,否則返回false】
例子:
res=/^k/.test('ikkk'); 返回false,因?yàn)閗的值不是第一位。
【/value$/:$ 表示匹配任何結(jié)尾為value的字符串】
例子:
res=/i$/i.test('hai'); 返回true 因?yàn)?前面的i在test中是最后一位
【/大寫(xiě)value$/:$ 表示匹配任何結(jié)尾為value的字符串,js中是區(qū)分大小寫(xiě)的,所以匹配不到】
例子:
res=/I$/i.test('hai'); 返回false 因?yàn)镮是大寫(xiě),test中沒(méi)有I,所以返回false,可以通過(guò)i來(lái)給它變成不區(qū)分大小寫(xiě)
【/value{x}/:{x} 表示匹配包含X個(gè)n的序列的字符串;它也是或邏輯 如果前面的值不匹配,后面的值匹配它一樣為true】
例子:
res=/o(?=w)/.test('helloworld'); 返回true; 表示o后面的值等于w,就相當(dāng)于/ow/,然后該值在test中是否存在。
res=/o(?!w)/.test('helloworld'); 返回true; ?!w,相當(dāng)于o的值后面有沒(méi)有w,如果沒(méi)有返回true,否則返回false,
由于它是或邏輯判斷,第一個(gè)o后面有w,但是第二個(gè)o后面沒(méi)有w,所有它返回true
【/\d/:\d 表示test中的值是否有數(shù)字】
例子:
res=/\d/.test('aajkldsfj8');//[0-9] 返回true,只要test中存在數(shù)字它就返回true。
【/\D/:\D 表示test中的值是否不存在數(shù)字】
例子:
res=/\D/.test('sdfkjllsdfj');//[^0-9] 返回true,只要test中存在數(shù)字它就返回true。
【exec()函數(shù):在目標(biāo)字符串中執(zhí)行一次正則匹配操作,并將結(jié)果以數(shù)組的形式返回】
參數(shù):string指定的字符串
【通過(guò)exec函數(shù)查找value】
res=/Is/i.exec('this is a test');
返回:["is", index: 2, input: "this is a test"]
意思為檢索的值為is,index2是指它開(kāi)始的位置,input是指被檢索的整個(gè)字符串,因?yàn)榧恿薸所以不區(qū)分大小寫(xiě)
因?yàn)樗祷氐氖菙?shù)組,可以使用res[0]來(lái)接收或顯示在頁(yè)面上,如果res[value]的大于上面數(shù)組的長(zhǎng)度,它返回undefined
【lastIndex屬性:】
定義:當(dāng)正則表達(dá)式中有全局標(biāo)志g,tet()函數(shù)不是從字符串的開(kāi)頭開(kāi)始查找,而是從屬性lastIndex所指定的位置出開(kāi)始
查找,屬性的默認(rèn)值是0,所以它第一次仍然是從字符串開(kāi)頭查找,當(dāng)找到一個(gè)匹配的時(shí)候,test()函數(shù)會(huì)將lastIndex的值改為本次匹配內(nèi)
容的下一個(gè)的索引位置,當(dāng)兩次執(zhí)行test()函數(shù)的時(shí)候,將會(huì)從該索引處查找,從而找到下一個(gè)匹配。
簡(jiǎn)單來(lái)說(shuō),就是test()執(zhí)行第一次匹配到值的時(shí)候,它下一次會(huì)從上一次匹配之后繼續(xù)檢索。
【String通過(guò)match()函數(shù)也可以使用正則表達(dá)式】
例子:
var str='this is a test';
res=str.match(/IS/i); 檢索出str中的IS,i不是不區(qū)分大小寫(xiě)。
返回值:["is", index: 2, input: "this is a test"]
它返回的值是一個(gè)數(shù)組類型,和exec()函數(shù)檢索值一樣。
【全局g】
例子:
var str='this is a test';
res=str.match(/IS/ig); 檢索出str中的IS,i不是不區(qū)分大小寫(xiě),g代表全局。
返回值:(2) ["is", "is"]
(2)表示存在多少個(gè)is,數(shù)組形式輸出["is","is"]
更多專業(yè)前端知識(shí),請(qǐng)上 【猿2048】www.mk2048.com
總結(jié)
以上是生活随笔為你收集整理的JS正则表达式的基础用法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 基于HTML5陀螺仪实现ofo首页眼睛移
- 下一篇: 【学亮IT手记】angularJS se