日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

正则基础介绍

發布時間:2023/12/16 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 正则基础介绍 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

      • 正則表達式
        • test
        • match
        • replace
          • 第二個參數是函數時:
          • replace的經典用法
        • exec
        • 元字符
        • {} 量詞
        • 標識符
        • 起始符和結束符
        • 貪婪和非貪婪
        • () 子集
        • [] 范圍詞
        • | 或者
        • 匹配中文
        • 斷言
          • 先行斷言、正向肯定預測(?=模式)
          • 正向否定預測(?!模式)
          • 反向肯定預測(?<=模式)
          • 反向否定預測(?<!模式)

正則表達式

//regular Expression //其實就是一套規則,一般用來處理字符串的查詢和替換工作。 寫法:1.字面量/正則規則/ 2.使用構造函數new RegExp(字符串的規則) //

test

reg.test(str) //匹配成功返回true,反正false //str 源字符串

match

// str.match(需要匹配的規則/子字符串) * 這是字符串的方法 * 會返回一個數組,包含著匹配內容,如果不成功返回null/*在使用正則作為規則時:正則沒有標識符g:返回第一次匹配成功的結果,同時index屬性返回下標,input返回目標字符串正則有標識符g:返回一個數組,數組里都是匹配成功的結果(字符串),沒有index和input*/

replace

用于對字符串進行替換
該方法是字符串的方法,接收兩個參數第一個匹配的規則(可以是字符串也可以是正則表達式),第二個可以是字符串,也可以是函數,函數必須有返回值作為替換內容。

//例1: var str = "XX我愛你,XX你咋帥呢?XX你有對象么?如果有,介意再多一個么?" var reg = /XX/g; console.log(str.replace(reg,"小張")) //小張我愛你,小張你咋帥呢?小張你有對象么?如果有,介意再多一個么? console.log(str.replace(reg,function(){return "小劉" })) //小劉我愛你,小劉你咋帥呢?小劉你有對象么?如果有,介意再多一個么?

大佬講重點,快拿小本本記下來

第二個參數是函數時:

1.如果正則沒有子集:

//此時函數有3個形參,第一個:匹配的內容;第二個:下標;第三個:源字符串 //例如: var str = "XX我愛你,XX你咋帥呢?XX你有對象么?如果有,介意再多一個么?" var reg = /XX/g; str.replace(reg,function (a,b,c) {console.log(a,b,c) }) /* XX 0 XX我愛你,XX你咋帥呢?XX你有對象么?如果有,介意再多一個么? XX 6 XX我愛你,XX你咋帥呢?XX你有對象么?如果有,介意再多一個么? XX 13 XX我愛你,XX你咋帥呢?XX你有對象么?如果有,介意再多一個么? */

2.如果正則有子集:

/*此時函數有n(子集個數+3)個形參, 第一個:匹配的內容; 第二個:第一個子集(如果有多個子集就往后順延);//比如有兩個子集,則第三個是第二個子集,第四個是下標... 第三個:下標; 第四個:源字符串 */ var str = "XX我愛你,XX你咋帥呢?XX你有對象么?如果有,介意再多一個么?" var reg = /(XX)+/g; str.replace(reg,function (a,b,c,d) {console.log(a,b,c,d) }) /* XX XX 0 XX我愛你,XX你咋帥呢?XX你有對象么?如果有,介意再多一個么? XX XX 6 XX我愛你,XX你咋帥呢?XX你有對象么?如果有,介意再多一個么? XX XX 13 XX我愛你,XX你咋帥呢?XX你有對象么?如果有,介意再多一個么? */
replace的經典用法
#這是replace的一個經典用法,[好好看好好學] //交換字符串里東西的位置 var str = "xiaoliu 小劉"; //交換xiaoliu和小劉的位置 var reg = /(\w)+\s(小劉)/g; //此時正則有兩個子集 console.log(str.replace(reg,"$2 $1")) /*此時的輸出結果為:風嶼 fengyu所見即所得:第二個參數是字符串時,如果正則有子集,字符串里$1代表第一個子集,$2代表第二個...... */

exec

#此方法用處不是很大,并且坑很多 //此方法跟迭代器有點類似,執行結果是按序輸出 var str = "abc"; var reg = /\w/g; console.log(reg.exec(str)) // ["a", index: 0, input: "abc"] console.log(reg.exec(str)) // ["b", index: 1, input: "abc"] console.log(reg.exec(str)) // ["c", index: 2, input: "abc"] console.log(reg.exec(str)) // null //然后再調用一次 console.log(reg.exec(str)) // ["a", index: 0, input: "abc"]

元字符

//轉義符 : \ 對后面的字符進行轉義//特殊字符正斜杠:/ 反斜杠: \(轉義)換行符: Linux(\n) MacOS(類Unix)(\r) windows (\n\r還有可能是\n)\d 數字的是意思 0~9\D 非數字\s 空格\S 非空格\w 字符(數字、字母、_)\W 非字符(除了\w之外的所有東西 ). 匹配任意字符,但是不包括(\n \r)\b 獨立部分(單詞邊界 單詞起始 結束 連詞符(除了\w之外的都屬于連詞符) )\B 非獨立部分

{} 量詞

// 寫法:{} 量詞的每種次數之間都是或者關系 // 量詞管轄前一個字符,除外() {0,8} 最少出現0次,最多只能出現8{2,5} 最少出現2次,最多出現5//特殊的寫法: {0,1} 最少出現0次,最多出現1次。 可有可無簡寫為:? {0,} 最少出現0次,最多....... 0到正無窮簡寫為:* {1,} 最少出現1次,最..... 1到正無窮簡寫為:+

標識符

//標識符 /規則/gim* g global 全局匹配* i ignore case 不區分大小寫* m multiline 換行匹配 (沒有卵用)

起始符和結束符

起始符(行首) ^ //一行的開頭 終止符(行尾) $ //一行的結束

貪婪和非貪婪

//貪婪和非貪婪:要在有量詞時才會存在。 #貪婪匹配* 直接寫量詞就是貪婪* 會優先從最高次開始匹配 #非貪婪匹配* 非貪婪是在量詞后面加 ?* 優先從最少次數開始匹配 //例如:var str = "AAAABBBBBCCCCC" var reg = /a{1,3}?/ig; //非貪婪 ["A", "A", "A", "A"] var reg = /a{1,3}/ig; //貪婪 ["AAA", "A"] console.log(str.match(reg))

() 子集

# () 子集//子集:被括號括起來的屬于一個整體//例如: var str = "ABabbabbb" var reg = /(ab)+/ig; // ["ABab", "ab"] 有子集 var reg = /ab+/ig; // ["AB", "abb", "abbb"] 沒有子集 console.log(str.match(reg))

[] 范圍詞

# [] 范圍詞// 里面的所有字符都是 或者 關系var str = "abcd64efd_gsah15dgsa_dgsha89gdjgABCDEFG_"var reg = /[AZa-z0-9]+/g; //[a-z] 等價于 a|b|c|d|e......|zconsole.log(str.match(reg))

# 非就是取反。 let s = '2020-12-04 20:54:30'let reg = /[^-\s:]+/glet res = s.match(reg)console.log(res) // ["2020", "12", "04", "20", "54", "30"]

| 或者

# | 或者var str = "abdsadabtyebwaqi" var reg = /a|b/g; //["a", "b", "a", "a", "b", "b", "a"] var reg = /ab/g; //["ab", "ab"] console.log(str.match(reg))

匹配中文

#所有的中文都在這個范圍 \u4e00-\u9fa5

斷言

(?:模式) 非捕獲匹配

子集 默認為捕獲匹配

先行斷言、正向肯定預測(?=模式)
# 固定匹配右邊 隨機匹配左邊 let str1 = 'xiaozhang123' let str2 = 'xiaozhang456'let reg = /xiaozhang(?=123)/ reg.test(str1) // true reg.test(str2) // false
正向否定預測(?!模式)
# 固定不匹配右邊 隨機匹配左邊 let str1 = 'xiaozhang123' let str2 = 'xiaozhang456'let reg = /xiaozhang(?!123)/ reg.test(str1) // false reg.test(str2) // true
反向肯定預測(?<=模式)
# 固定匹配左邊 隨機匹配右邊 let str1 = '123xiaozhang' let str2 = '456xiaozhang'let reg = /(?<=123)xiaozhang/ reg.test(str1) // true reg.test(str2) // false
反向否定預測(?<!模式)
# 固定不匹配左邊 隨機匹配右邊 let str1 = '123xiaozhang' let str2 = '456xiaozhang'let reg = /(?<!123)xiaozhang/ reg.test(str1) // false reg.test(str2) // true

總結

以上是生活随笔為你收集整理的正则基础介绍的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。