好程式設計師web前端培訓分享JavaScript學習筆記之正則
好程式設計師 web 前端培訓分享 JavaScript 學習筆記 之 正則 , 正規表示式,又名 “規則表示式”
由我們自己來書寫 “規則”,專門用來檢測 字串 是否符合 “規則” 使用的
我們使用一些特殊的字元或者符號定義一個 “規則公式”,然後用我們定義好的 “規則公式” 去檢測字串是不是合格
var reg = /\d+/ var str1 = '123' var str2 = 'abc' console.log(reg.test(str1)) // true console.log(reg.test(str2)) // false
· 上面的變數 reg 就是定製好的規則
· 檢測 str1 這個字串的時候,符合規則
· 檢測 str2 這個字串的時候,不符合規則
建立一個正規表示式
· 想制定 “規則”,必須要按照人家要求的方式來制定
· 把一些字母和符號寫在 // 中間的東西,叫做正規表示式,比如 /abcdefg/
· 建立正規表示式有兩個方式 字面量 和 建構函式建立
字面量建立
// 下面就是字面量建立一個正規表示式 var reg = /abcdefg/
· 這個正規表示式就可以去檢測字串了
建構函式建立
// 下面就是建構函式建立一個正規表示式 var reg = new RegExp ( 'abcdefg' )console.log(reg) // /abcdefg/
· 使用建構函式方式建立的和字面量建立的,得到的結果一樣
正規表示式裡面的符號
· 知道了怎麼建立一個正規表示式以後,我們就來詳細的說一下正規表示式裡面涉及到的一些符號了
元字元
· . : 匹配非換行的任意字元
· \ : 轉譯符號,把有意義的 符號 轉換成沒有意義的 字元 ,把沒有意義的 字元 轉換成有意義的 符號
· \s : 匹配空白字元(空格/製表符/...)
· \S : 匹配非空白字元
· \d : 匹配數字
· \D : 匹配非數字
· \w : 匹配數字字母下劃線
· \W : 匹配非數字字母下劃線
· 有了元字元我們就可以簡單的制定一些規則了
var reg = /\s/ var str = 'a b' var str2 = 'ab' console.log(reg.test(str)) // true console.log(reg.test(str2)) // false var reg = /\d/ var str = 'abc1' var str2 = 'abc' console.log(reg.test(str)) // true console.log(reg.test(str2)) // false var reg = /\w/ var str = 'a1' var str2 = '#@$' console.log(reg.test(str)) // true console.log(reg.test(str2)) // false
限定符
· * : 前一個內容重複至少 0 次,也就是可以出現 0 ~ 正無窮 次
· + : 前一個內容重複至少 1 次,也就是可以出現 1 ~ 正無窮 次
· ? : 前一個內容重複 0 或者 1 次,也就是可以出現 0 ~ 1 次
· {n} : 前一個內容重複 n 次,也就是必須出現 n 次
· {n,} : 前一個內容至少出現 n 次,也就是出現 n ~ 正無窮 次
· {n,m} : 前一個內容至少出現 n 次至多出現 m 次,也就是出現 n ~ m 次
· 限定符是配合元字元使用的
// 下面正則表示驗證數字出現 0 ~ 正無窮次都可以 var reg = /\d*/ var str = 'abc' var str2 = 'abc1' var str3 = 'abc123' console.log(reg.test(str)) // true console.log(reg.test(str2)) // true console.log(reg.test(str3)) // true// 下面正則表示驗證數字出現 1 ~ 正無窮次都可以 var reg = /\d+/ var str = 'abc' var str2 = 'abc1' var str3 = 'abc123' console.log(reg.test(str)) // false console.log(reg.test(str2)) // true console.log(reg.test(str3)) // true// 下面正則表示驗證數字出現 0 ~ 1 次都可以 var reg = /\d?/ var str = 'abc' var str2 = 'abc1' console.log(reg.test(str)) // true console.log(reg.test(str2)) // true// 下面正則表示驗證數字必須出現 3 次 var reg = /\d{3}/ var str = 'abc' var str2 = 'abc1' var str3 = 'abc123' console.log(reg.test(str)) // false console.log(reg.test(str2)) // false console.log(reg.test(str3)) // true// 下面正則表示驗證數字出現 3 ~ 正無窮次 var reg = /\d{3,}/ var str = 'abc' var str2 = 'abc1' var str3 = 'abc123' var str4 = 'abcd1234567' console.log(reg.test(str)) // false console.log(reg.test(str2)) // false console.log(reg.test(str3)) // true console.log(reg.test(str4)) // true// 下面正則表示驗證數字只能出現 3 ~ 5 次 var reg = /\d{3,5}/ var str = 'abc' var str2 = 'abc1' var str3 = 'abc123' var str4 = 'abc12345' console.log(reg.test(str)) // false console.log(reg.test(str2)) // false console.log(reg.test(str3)) // true console.log(reg.test(str4)) // true
邊界符
· ^ : 表示開頭
· $ : 表示結尾
· 邊界符是限定字串的開始和結束的
// 下面表示從開頭到結尾只能有數字,並且出現 3 ~ 5 次 var reg = /^\d{3,5}$/ var str = 'abc' var str2 = 'abc123' var str3 = '1' var str4 = '1234567' var str5 = '123' var str6 = '12345' console.log(reg.test(str)) // false console.log(reg.test(str2)) // false console.log(reg.test(str3)) // false console.log(reg.test(str4)) // false console.log(reg.test(str5)) // true console.log(reg.test(str6)) // true
特殊符號
· () : 限定一組元素
· [] : 字符集合,表示寫在 [] 裡面的任意一個都行
· [^] : 反字符集合,表示寫在 [^] 裡面之外的任意一個都行
· - : 範圍,比如 a-z 表示從字母 a 到字母 z 都可以
· | : 或,正則裡面的或 a|b 表示字母 a 或者 b 都可以
· 現在我們就可以把若干符號組合在一起使用了
// 下面是一個簡單的郵箱驗證// 非_$開頭,任意字元出現至少6次,一個@符號,(163|126|qq|sina)中的任意一個,一個點,(com|cn|net)中的任意一個 var reg = /^[^_$].{6,}@(163|126|qq|sina)\.(com|cn|net)$/
標示符
· i : 表示忽略大小寫
· 這個 i 是寫在正則的最後面的
· /\w/i
· 就是在正則匹配的時候不去區分大小寫
· g : 表示全域性匹配
· 這個 g 是寫在正則的最後面的
· /\w/g
· 就是全域性匹配字母數字下劃線
正規表示式的方法
· 正則提供了一些方法給我們使用
· 用來檢測和捕獲字串中的內容的
test
· test 是用來檢測字串是否符合我們正則的標準
· 語法: 正則.test(字串)
· 返回值: boolean
console.log( /\d+/ .test( '123' )) // true console.log( /\d+/ .test( 'abc' )) // false
exec
· exec 是把字串中符合條件的內容捕獲出來
· 語法: 正則.exec(字串)
· 返回值: 把字串中符合正則要求的第一項以及一些其他資訊,以陣列的形式返回
var reg = /\d{3}/ var str = 'hello123world456你好789' var res = reg.exec(str)console.log(res) /* ["123", index: 5, input: "hello123world456你好789", groups: undefined] 0: "123" groups: undefined index: 5 input: "hello123world456你好789" length: 1 __proto__: Array(0)*/
· 陣列第 0 項就是匹配到的字串內容
· index 屬性表示從字串的索引幾開始是匹配的到字串
字串的方法
· 字串中有一些方法也是可以和正則一起使用的
search
· search 是查詢字串中是否有滿足正則條件的內容
· 語法: 字串.search(正則)
· 返回值 : 有的話返回開始索引,沒有返回 -1
var reg = /\d{3}/ var str = 'hello123' var str2 = 'hello' console.log(str.search(reg)) // 5 console.log(str2.search(reg)) // -1
match
· match 找到字串中符合正則條件的內容返回
· 語法: 字串.match(正則)
· 返回值 :
· 沒有標示符 g 的時候,是和 exec 方法一樣
· 有標示符 g 的時候,是返回一個陣列,裡面是匹配到的每一項
var reg = /\d{3}/ var str = 'hello123world456' var str2 = 'hello' console.log(str.match(reg)) // ["123", index: 5, input: "hello123wor456", groups: undefined] console.log(str2.match(reg)) // null var reg = /\d{3}/g var str = 'hello123world456' var str2 = 'hello' console.log(str.match(reg)) // ["123", "456"] console.log(str2.match(reg)) // null
replace
· replace 是將字串中滿足正則條件的字串替換掉
· 語法: 字串.replace(正則,要替換的字串)
· 返回值 : 替換後的字串
var reg = /\d{3}/ var str = 'hello123world456' var str2 = 'hello' console.log(str.replace(reg)) // hello666world456 console.log(str2.replace(reg)) // hello var reg = /\d{3}/g var str = 'hello123world456' var str2 = 'hello' console.log(str.replace(reg)) // hello666world666 console.log(str2.replace(reg)) // hello
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69913864/viewspace-2690588/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 好程式設計師web前端培訓分享JavaScript學習筆記之設計模式程式設計師Web前端JavaScript筆記設計模式
- 好程式設計師web前端培訓分享JavaScript學習筆記Promise程式設計師Web前端JavaScript筆記Promise
- 好程式設計師web前端培訓分享JavaScript學習筆記cookie程式設計師Web前端JavaScript筆記Cookie
- 好程式設計師web前端培訓分享JavaScript學習筆記SASS程式設計師Web前端JavaScript筆記
- 好程式設計師web前端培訓分享JavaScript學習筆記之陣列程式設計師Web前端JavaScript筆記陣列
- 好程式設計師web前端培訓分享JavaScript學習筆記之ES5程式設計師Web前端JavaScript筆記
- 好程式設計師web前端培訓分享學習JavaScript程式設計師Web前端JavaScript
- 好程式設計師web前端培訓JavaScript學習筆記DOM程式設計師Web前端JavaScript筆記
- 好程式設計師web前端培訓JavaScript學習筆記--jQuery程式設計師Web前端JavaScript筆記jQuery
- 好程式設計師web前端培訓分享node學習筆記程式設計師Web前端筆記
- 好程式設計師web前端培訓分享JavaScript學習筆記之迴圈結構程式設計師Web前端JavaScript筆記
- 好程式設計師web前端培訓分享JavaScript學習筆記分支結構程式設計師Web前端JavaScript筆記
- 好程式設計師web前端培訓分享JavaScript學習指南程式設計師Web前端JavaScript
- 好程式設計師web前端培訓分享HTMLCSS學習筆記BFC程式設計師Web前端HTMLCSS筆記
- 好程式設計師web前端培訓分享React學習筆記(三)程式設計師Web前端React筆記
- 好程式設計師web前端培訓分享React學習筆記(一)程式設計師Web前端React筆記
- 好程式設計師web前端培訓分享React學習筆記(二)程式設計師Web前端React筆記
- 好程式設計師web前端培訓分享JavaScript學習筆記函式進階程式設計師Web前端JavaScript筆記函式
- 好程式設計師web前端培訓分享JavaScript學習筆記閉包與繼承程式設計師Web前端JavaScript筆記繼承
- 好程式設計師web前端培訓分享JavaScript學習筆記ajax及ajax封裝程式設計師Web前端JavaScript筆記封裝
- 好程式設計師web前端培訓分享JavaScript學習筆陣列的排序程式設計師Web前端JavaScript陣列排序
- 好程式設計師web前端培訓分享node學習筆記系列之四十一程式設計師Web前端筆記
- 好程式設計師web前端培訓分享詳解JavaScript學習筆記建構函式程式設計師Web前端JavaScript筆記函式
- 好程式設計師web前端培訓學習筆記Vue學習筆記一程式設計師Web前端筆記Vue
- 好程式設計師web前端培訓分享之HTMLCSS學習筆記css3-多列程式設計師Web前端HTMLCSS筆記S3
- 好程式設計師web前端培訓學習筆記Vue學習筆記之二程式設計師Web前端筆記Vue
- 好程式設計師web前端培訓分享JavaScript框架J程式設計師Web前端JavaScript框架
- 好程式設計師web前端培訓分享之HTMLCSS學習筆記媒體查詢+ rem用法程式設計師Web前端HTMLCSS筆記REM
- 好程式設計師web前端培訓分享HTMLCSS學習之CSS基礎程式設計師Web前端HTMLCSS
- 好程式設計師web前端教程分享JavaScript學習筆記之Event事件二程式設計師Web前端JavaScript筆記事件
- 好程式設計師web前端培訓分享之uni-app學習筆記uni-app詳解程式設計師Web前端APP筆記
- 好程式設計師web前端培訓HTMLCSS學習筆記之頁面最佳化程式設計師Web前端HTMLCSS筆記
- 好程式設計師web前端培訓分享HTMLCSS學習筆記css3選擇器程式設計師Web前端HTMLCSS筆記S3
- 好程式設計師web前端培訓分享怎樣學好css?程式設計師Web前端CSS
- 好程式設計師web前端培訓分享JavaScript基礎語法程式設計師Web前端JavaScript
- 好程式設計師web前端培訓分享JavaScript相關知識程式設計師Web前端JavaScript
- 好程式設計師web前端培訓分享九個JavaScript小技巧程式設計師Web前端JavaScript
- 好程式設計師web前端培訓分享Javascript中原型屬性程式設計師Web前端JavaScript原型