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