公告:攜程招聘java、前端、測試、產品等,請發簡歷至[email protected],幫內推!

正則表達式前瞻后顧,負前瞻,負后顧(?=,?:和?!)理解和應用

1199次瀏覽

前言

前面文章講解了一些正則表達式的文章,今天講講?=,?:和?!這幾個符號的作用吧~

這幾個符號用的不多,主要解釋如下:

前瞻:

haorooms(?=hrms) 查找hrms前面的haorooms,表示我們需要匹配hrms的前面

后顧:

(?<=hrms)haorooms 查找hrms后面的haorooms

負前瞻:

haorooms(?!hrms) 查找后面不是hrms的haorooms,

負后顧:

(?<!=hrms)haorooms 查找前面不是hrms的haorooms

例子

console.log("我是中國人".replace(/我是(?=中國)/, "haorooms")) // 輸出: 'haorooms中國人',匹配的是中國前面的'我是'

console.log("我是中國人".replace(/(?!中國)/, "haorooms")) // 輸出:'haorooms我是中國人'

console.log("我是中國人".replace(/(?:中國)/, "haorooms")) // 輸出:'我是haorooms人',匹配'中國'本身

console.log("我是中國人".replace(/(?<=中國)人/, "haorooms")) // 輸出:'我是中國haorooms',匹配的是中國后面的'人'

console.log("我是中國人".replace(/(?<!中國)/, "haorooms")) // 輸出:'haorooms我是中國人'

例子二

匹配下面的href地址

< br/>您好,歡迎來到haorooms博客
< br/><a target=_blank href="www.sqnjmr.live">前端博客</a>前端
< br/><a target=_blank href="resource.haorooms.com">前端資源庫</ a>haorooms
< br/>

方法1: 匹配,捕獲(存儲)

正則表達式:

(?<=(href=")).{1,200}(?=(">))

解釋:(?<=(href=")) 表示 匹配以(href=")開頭的字符串,并且捕獲(存儲)到分組中 (?=(">)) 表示 匹配以(">)結尾的字符串,并且捕獲(存儲)到分組中

方法2: 匹配,不捕獲(不存儲)

正則表達式:

(?<=(?:href=")).{1,200}(?=(?:">))

解釋:(?<=(?:href=")) 表示 匹配以(href=")開頭的字符串,并且不捕獲(不存儲)到分組中 (?=(?:">)) 表示 匹配以(">)結尾的字符串,并且不捕獲(不存儲)到分組中

應用

數字格式化

console.log("1234567890".replace(/\B(?=(?:\d{3})+(?!\d))/g,",")) 

// 輸出:'1,234,567,890'

Tags: 正則前瞻后顧js

相關文章:

任选9场吧