我們開發**需要對一些前台傳過來的字串進行檢驗,比如檢驗使用者輸入的使用者名稱是否合法,**號是否合法,使用者
的郵箱是否合法等。我們可以自己寫個函式進行檢驗。但是過於繁瑣,這時候我們可以用正規表示式進行檢驗。能夠準確
的檢驗出使用者輸入的郵箱是否合法,如果不合法反饋給使用者。
1:字面量方式:var reg=/pattern/flags; //(這種方式下不能拼接字串.)
2:建構函式方式:var reg = new regexp(pattern,flags); //(這種方式下需要轉義,\d==d,\\d=\d.)
個人建議用字面量方式,很多字串需要轉義的話看著比較亂。
pattern:正規表示式
flags:標識(修飾符)
標識主要包括:
1. i 忽略大小寫匹配
2. m 多行匹配,即在到達一行文字末尾時還會繼續尋常下一行中是否與正則匹配的項
3. g 全域性匹配 模式應用於所有字串,而非在找到第乙個匹配項時停止
代表特殊含義的元字元:
\d : 0-9之間的任意乙個數字 \d只佔乙個位置代表次數的量詞元字元:\w : 數字,字母 ,下劃線 0-9 a-z a-z _
\s : 空格或者空白等
\d : 除了\d
\w : 除了\w
\s : 除了\s
. : 除了\n之外的任意乙個字元
\ : 轉義字元
| : 或者
() : 分組
\n : 匹配換行符
\b : 匹配邊界 字串的開頭和結尾 空格的兩邊都是邊界 => 不占用字串位數
^ : 限定開始位置 => 本身不佔位置
$ : 限定結束位置 => 本身不佔位置
[a-z] : 任意字母 中的表示任意乙個都可以
[^a-z] : 非字母 中^代表除了
[abc] : abc三個字母中的任何乙個 [^abc]除了這三個字母中的任何乙個字元
* : 0到多個在介紹零寬斷言之前我們前簡單實現下利用正規表示式判斷使用者輸入的郵箱是否合法。+ : 1到多個
? : 0次或1次 可有可無(防止正規表示式的貪婪性)。
: 正好n次;
: n到多次
: n次到m次
這就是正規表示式的強大之處,能夠簡單的幾行**就可以匹配到你想要的字串,然後介紹我們今天要說的零寬斷言
還有一點需要注意如果我們呼叫字串的match函式,不會返回零寬斷言後面符合條件的字串。這也是上面說位置而
不是字串的原因。
首先我們先記住這個形式,然後我們來舉個例子實踐一下。
正規表示式 零寬斷言
零寬斷言的意思是 匹配寬度為零,滿足一定的條件 斷言 零寬斷言用於查詢在某些內容 但並不包括這些內容 之前或之後的東西,也就是說它們像 b 這樣的錨定作用,用於指定乙個位置,這個位置應該滿足一定的條件 即斷言 因此它們也被稱為零寬斷言。斷言用來宣告乙個應該為真的事實。正規表示式中只有當斷言為真時才會...
正規表示式 零寬斷言
今天在codewars.com做練習,遇到乙個正規表示式相關的題目regex password validation 題目很簡單,對字串進行校驗,規則如下 1.長度至少有6位 2.包含小寫字母 3.包含大寫字母 4.包含數字 5.僅由數字和字母組成 對於2.3.4這3個條件,沒辦法寫在乙個正則裡面,...
正規表示式 零寬斷言
接下來的四個用於查詢在某些內容 但並不包括這些內容 之前或之後的東西,也就是說它們像 b 那樣用於指定乙個位置,這個位置應該滿足一定的條件 斷言 因此它們也被稱為零寬斷言。最好還是拿例子來說明吧 exp 也叫零寬度正 先行斷言,它斷言自身出現的位置的後面能匹配表示式exp 比如 b w ing b ...