正規表示式中的零寬斷言

2021-10-23 01:38:43 字數 899 閱讀 9846

在使用正規表示式時,有時我們需要捕獲的內容前後必須是特定的內容,但又不捕獲這些特定的內容,這個時候就要使用零寬斷言了。零寬斷言和它的名字一樣,是一種零寬度的匹配,它匹配的內容不會儲存到結果中去,最終匹配結果只是乙個位置而已。零寬斷言是給指定位置新增乙個限定條件,用來規定此位置之前或者之後必須滿足限定條件才能使正規表示式匹配成功。

如果覺得還是不理解的話,我們來看兩個例子,比如有兩個正規表示式:

千分符就是在財務中每三位的分隔符,比如12,345,678.12中的",",而數字是不會自己加的,這就要我們用正規表示式匹配位置,然後加進去。

var str =

"12345678.12"

;str=str.

replace

(/(\d)(?=(\d)+($|\.))/g

,"$1,");

console.

log(str)

;

我們經常在登入或者註冊時遇到密碼強度的約束,他們是怎麼約束的呢?我舉乙個簡單約束的例子大家可以看著理解一下,每個公司做的密碼強度約束都不太相同,有要求高的有要求不太高的。

至少包含一位大寫字母:/^(?![0-9a-z]+$)/

正著不好寫我們可以反著分析,至少包含一位大寫字母也就是不能全部都是數字和小寫字母。

至少包含一位數字:/^(?![a-za-z]+$)/

不能全部由字母組成。

不能有特殊字元,至少六位:/^[0-9a-za-z]$/

只能是字母數字組合,且至少六位。

總結:/^(?![0-9a-z]+$)(?![a-za-z]+$)[0-9a-za-z]$/

個人部落格

正規表示式 零寬斷言

零寬斷言的意思是 匹配寬度為零,滿足一定的條件 斷言 零寬斷言用於查詢在某些內容 但並不包括這些內容 之前或之後的東西,也就是說它們像 b 這樣的錨定作用,用於指定乙個位置,這個位置應該滿足一定的條件 即斷言 因此它們也被稱為零寬斷言。斷言用來宣告乙個應該為真的事實。正規表示式中只有當斷言為真時才會...

正規表示式 零寬斷言

今天在codewars.com做練習,遇到乙個正規表示式相關的題目regex password validation 題目很簡單,對字串進行校驗,規則如下 1.長度至少有6位 2.包含小寫字母 3.包含大寫字母 4.包含數字 5.僅由數字和字母組成 對於2.3.4這3個條件,沒辦法寫在乙個正則裡面,...

正規表示式 零寬斷言

接下來的四個用於查詢在某些內容 但並不包括這些內容 之前或之後的東西,也就是說它們像 b 那樣用於指定乙個位置,這個位置應該滿足一定的條件 斷言 因此它們也被稱為零寬斷言。最好還是拿例子來說明吧 exp 也叫零寬度正 先行斷言,它斷言自身出現的位置的後面能匹配表示式exp 比如 b w ing b ...