不成體系之備忘 JS正規表示式全接觸

2022-01-14 23:14:19 字數 3096 閱讀 8231

•測試字串的某個模式。例如,可以對乙個輸入字串進行測試,看在該字串是否存在乙個**號碼模式或乙個信用卡號碼模式。這稱為資料有效性驗證

•替換文字。可以在文件中使用乙個正規表示式來標識特定文字,然後可以全部將其刪除,或者替換為別的文字

•根據模式匹配從字串中提取乙個子字串。可以用來在文字或輸入欄位中查詢特定文字

修飾符描述

i 執行對大小寫不敏感的匹配。

g 執行全域性匹配(查詢所有匹配而非在找到第乙個匹配後停止)。

m執行多行匹配。

其他備忘見

我們來著重分析js的正規表示式的一些方法以及使用

str = "certainly!he loves her!";
alert(re.test(str));//true,只要包含he(he)就符合,如果要只是he或he,不能有其它字元,則可使用^和$

/*regexpobject.exec(string)

返回乙個陣列,其中存放匹配的結果。如果未找到匹配,則返回值為 null。

*/

.      var sometext = "web2.0 .net2.0";
var pattern = /(\w+)(\d)\.(\d)/;
var outcome_exec = pattern.exec(sometext);

得到的outcome_exec值為  [web2.0, web, 2, 0]. 這是乙個陣列. 如果在pattern這個表示式後面加上全域性g. 得到的結果還是[web2.0, web, 2, 0]. 可見exec

1. 永遠匹配一次

2. 返回的陣列是第一次匹配的結果和分組匹配的結果合集

如果正規表示式沒有全域性變數, 那麼string.match得到的結果是和exec一樣的. 如果有了g, match就不會返回分組捕獲的結果. 比如

var sometext = "web2.0 .net2.0";
var pattern = /(\w+)(\d)\.(\d)/;
var outcome_matc = sometext.match(pattern); //類似陣列的返回值 [web2.0,web,2,0]
var pattern2 = /(\w+)(\d)\.(\d)/g;
var outcome_matc2 = sometext.match(pattern2); //類似陣列的返回值 [web2.0,net2.0]

1. 如果沒有全域性變數, 那麼match和exec一樣

2. 有全域性變數, match只返回正則表達匹配的結果集, 而不包含任何分組捕獲的結果.

ps: \w的用法, \w相當於[0-9a-za-z], 可是在上面的表示式中(\w+)只匹配web, 卻不匹配web2.

這是因為如果\w後面跟著\d, 那麼\w只相當於[a-za-z]

search, 返回匹配的表示式的開始索引. 全域性變數無效. 沒找到返回-1

str = "my age is 18.golden age!";//年齡不是一定的,我們用indexof不能查詢它的位置
re = /\d+/;
alert(str.search(re));//返回查詢到的字串開始下標10
//下面的**雖然不出錯,但g標誌是多餘的
re=/\d+/g;
alert(str.search(re));//仍然是10

其他

str ="some some             \tsome\t\f";
re = /\s+/;
alert(str.replace(re,"#"));//但這樣只會將第一次出現的一堆空白字元替換掉
//因為乙個正規表示式只能進行一次匹配,\s+匹配了第乙個空格後就退出了
re = /\s+/g;//g,全域性標誌,將使正規表示式匹配整個字串
alert(str.replace(re,"@"));//some@some@some@
//另乙個與之相似的是split
var str = "a-bd-c";
var arr = str.split("-");//返回["a","bd","c"]
//如果str是使用者輸入的,他可能輸入a-bd-c也可能輸入a bd c或a_bd_c,但不會是abdc(這樣就說他輸錯了)
str = "a_db-c";//使用者以他喜歡的方式加分隔符s
re=/[^a-z]/i;//前面我們說^表示字元開始,但在裡它表示乙個負字符集
//匹配任何不在指定範圍內的任意字元,這裡將匹配除字母處的所有字元
arr = str.split(re);//仍返回["a","bd","c"];
replace的複雜應用
//計算某個字串中9出現過的次數
var str="adf9df9df9",//那個文字檔案中的字串;
re=/9/gi,//匹配9
counter=0;//計數器
str.replace(re,function () );
//最後str 變成 adf#df#df#"

function f2c(s) ));
}
document.write(f2c("water freezes at 32f and boils at 212f."));
//water freezes at 0c and boils at 100c.
ps: replace方法中的第二個引數是函式的時候, 函式裡有$0,$1…..$n這樣的引數, 代表正規表示式的子捕獲.
replace不更新regexp全域性屬性.

正規表示式備忘

1 為萬用字元,表示任何乙個字元,例如 a.c 可以匹配 anc abc acc 2 在內可以指定要求匹配的字元,例如 a nbc c 可以匹配 anc abc acc 但不可以匹配 ancc a到z可以寫成 a z 0到9可以寫成 0 9 3 數量限定符號,表示匹配次數 或者叫做長度 的符號 包括...

JS 正規表示式公式(全)

驗證數字的正規表示式集 驗證數字 0 9 驗證n位的數字 d 驗證至少n位數字 d 驗證m n位的數字 d 驗證零和非零開頭的數字 0 1 9 0 9 驗證有兩位小數的正實數 0 9 0 9 驗證有1 3位小數的正實數 0 9 0 9 驗證非零的正整數 1 9 0 9 驗證非零的負整數 1 9 0 ...

正規表示式(全)

之前學習過正規表示式,沒有系統的總結過,今天尋找一篇分享出來。網域名稱 a za z0 9 a za z0 9 a za z0 9 a za z0 9 interneturl a za z s 或 http w w w 手機號碼 13 0 9 14 5 7 15 0 1 2 3 4 5 6 7 8 ...