正規表示式 a 是什麼意思

2022-06-09 06:33:09 字數 2356 閱讀 4989

(?=a)非獲取匹配,正向肯定預查,在任何匹配pattern的字串開始處匹配查詢字串,該匹配不需要獲取供以後使用。
還有四個和這個相近的:

(?!a)非獲取匹配,正向否定預查,在任何不匹配pattern的字串開始處匹配查詢字串,該匹配不需要獲取供以後使用。

(?:a)非獲取匹配,匹配pattern但不獲取匹配結果,不進行儲存供以後使用。這在使用或字元「(|)」來組合乙個模式的各個部分是很有用。

(?<=a)非獲取匹配,反向肯定預查,與正向肯定預查類似,只是方向相反。

(?a)非獲取匹配,反向否定預查,與正向否定預查類似,只是方向相反。

以上是官方的定義,比較難懂,我用自己的理解翻譯了一下:

(?=a) 表示我們需要匹配某樣東西的前面。 

(?!a) 表示我們需要不匹配某樣東西。

(?:a) 表示我們需要匹配某樣東西本身。

(?<=a) 表示我們需要匹配某樣東西的後面。

(?我的翻譯可能還是不太容易理解,我們用**來解釋一下!

console.log("我是中國人".replace(/我是(?=中國)/, "rr")) //

輸出: 'rr中國人',匹配的是中國前面的'我是'

console.log("我是中國人".replace(/(?!中國)/, "rr")) //

輸出:'rr我是中國人'

console.log("我是中國人".replace(/(?:中國)/, "rr")) //

輸出:'我是rr人',匹配'中國'本身

console.log("我是中國人".replace(/(?<=中國)人/, "rr")) //

輸出:'我是中國rr',匹配的是中國後面的'人'

console.log("我是中國人".replace(/(?//

輸出:'rr我是中國人'

tips:(?!a)和(?【分組】:

如果你想要在正則中重複匹配乙個字串,那麼可以用乙個 () 號給包起來,官方得說法是指定子表示式,也就是分組!

用**解釋就是:

\d  //

表示匹配1到3位的數字

(\d\.) //

表示匹配三位數字加上乙個英文句號,並且把這個分組(也就是這個匹配規則)重複三次

理解了分組這個概念,再複雜的表示式也可以拆分成幾個細的分組來實現。

【後向引用】:

用 () 號建立了乙個分組後,匹配這個子表示式的文字可以在表示式或其它程式中作進一步的處理。每個分組會自動擁有乙個組號,規則是:從左向右,以分組的左括號為標誌,第乙個出現的分組的組號為1,第二個為2,以此類推。

如果你要重複搜尋前面某個分組匹配的文字,可以用 \1 ,含義是,分組1匹配的文字,這種引用方式叫做後向引用。

用**解釋一下:

console.log("oh oh , oh my god!".replace(/\b(\w+)\b\s+\1\b/, "rr"))

//輸出:'rr , oh my god!'

//\b 匹配乙個單詞邊界,一側為單詞的字元,另外一側為非單詞字元

//\b(\w+)\b,匹配單詞開始處和結束處之間的多於乙個的字母或數字

//\s+ 匹配乙個或者多個空格

//\1 後向引用,重複一次

//如果正規表示式去掉 \1

console.log("oh oh , oh my god!".replace(/\b(\w+)\b\s+/, "rr"))

//輸出:'rroh , oh my god!'

數字格式化

console.log("1234567890".replace(/\b(?=(?:\d)+(?!\d))/g,",")) 

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

去除ip位址

console.log("192.168.0.1".replace(/((2[0-4]\d|25[0-5]|[01]?\d\d?)\.)(2[0-4]\d|25[0-5]|[01]?\d\d?)/,"rr"))

//輸出:'rr'

去除字串中的中文,英文或者數字

console.log("aaa我是中國人111".replace(/[^u4e00-u9fa5]/g, ""))  //

去除中文,輸出:'aaa111'

console.log("aaa我是中國人111".replace(/(\d)\1+/g, "")) //

去除數字,輸出:'aaa我是中國人'

console.log("aaa我是中國人111".replace(/([a-z])\1+/g, "")) //

去除英文,輸出:'我是中國人111'

正規表示式 「 」是什麼意思

正規表示式 是什麼意思?匹配任意字元或 我測試了字串 sdaf 也能匹配 字元,就不太明白什麼意思。而且任意字元匹配沒有意義了啊 解釋 出現在字元組中時,就不是元字元了,就表示點號本身。在字元組中的 只有兩邊是合法的字元區間是,才表示乙個字串行,例如 a z 這樣。你這個表示式應該就是能匹配點號或減...

正規表示式 a 是什麼意思?

1.a 表示我們需要匹配某樣東西的前面。2.a 表示我們需要不匹配某樣東西。3.a 表示我們需要匹配某樣東西本身。4.a 表示我們需要匹配某樣東西的後面。5.例子說明 1.a console.log 我是中國人 replace 我是 中國 rr 列印出 rr中國人 匹配的是中國前面的 我是 2.a ...

正規表示式中的 或 是什麼意思?

後邊多乙個?表示懶惰模式。必須跟在或者 後邊用 如 如果用正則匹配src中內容非懶惰模式匹配 src 匹配結果是 src width 60px height 80px 意思是從 往後匹配,直到最後乙個 匹配結束 懶惰模式正則 src 結果 src 因為匹配到第乙個 就結束了一次匹配。不會繼續向後匹配...