正規表示式

2021-08-22 16:17:35 字數 2985 閱讀 9201

1.global:是否全域性搜尋,預設是false

2.ignorecase:是否大小寫敏感,預設是false

3.multiline:多行搜尋,預設值是false

5.source:正規表示式的文字字串

1)建構函式方式 var reg=new regexp('abc','gi');

2)字面量方式 var reg=/abc/gi;

regobj.test(strobj)

用於測試字串引數中是否存正規表示式模式,如果存在則返回true,否則返回false

var patt = /e/;

patt.test("the best things in life are free!"); //true

regobj.exec(strobj)

用於正規表示式模式在字串中執行查詢,如果 exec() 找到了匹配的文字,則返回乙個結果陣列。否則,返回 null。除了陣列元素和 length 屬性之外,exec() 方法還返回兩個屬性。index 屬性宣告的是匹配文字的第乙個字元的位置。input 屬性則存放的是被檢索的字串 string。

var str = 'hello world';

var pattern = /([a-z]+)\s([a-z]+)/;

var arr = pattern.exec(str);

//  ["hello world", "hello", "world", index: 0, input: "hello world", groups: undefined]

strobj.match(regobj)

match() 方法將檢索字串 stringobject,以找到乙個或多個與 regexp 匹配的文字。如果 regexp 沒有標誌 g,那麼 match() 方法就只能在 strobj 中執行一次匹配。如果沒有找到任何匹配的文字, match() 將返回 null。否則,它將返回乙個陣列,其中存放了與它找到的匹配文字有關的資訊。該陣列的第 0 個元素存放的是匹配文字,而其餘的元素存放的是與正規表示式的子表示式匹配的文字。

var str="1 plus 2 equal 33";

console.log(str.match(/\d+/)); //[1]

console.log(str.match(/\d+/g)); //[1,2,33]

strobj.replace(regobj,function(){})

用來將字串中的某些子串替換為需要的內容,接受兩個引數,第乙個引數可以為正則或者子字串,表示匹配需要被替換的內容,第二個引數為被替換的新的子字串。如果宣告為全域性匹配則會替換所有結果,否則只替換第乙個匹配到的結果。

strobj.split(regobj)

主要用來將乙個字串拆分成乙個陣列,它接受乙個正則或者子字元(串)作為引數,返回乙個陣列,簡單情況下,我們不需要使用正則,只有在字串拆分規則不統一的情況下才需要使用正則。

strobj.search(regobj)

用於查詢正規表示式是在字串中出現的位置

var str="visit w3school!";

console.log(str.search(/w3school/)); //-1

console.log(str.serach(/w3school/i)); // 6

捕獲性分組:()

捕獲性分組工作模式()會把每個分組裡匹配的值儲存起來。

非捕獲性分組:(?:)

非捕獲性分組工作模式下分組(?:)會作為匹配校驗,並出現在匹配結果字元裡面,但不作為子匹配返回。匹配 pattern 但不獲取匹配結果,不進行儲存供以後使用。這在使用 "或" 字元 (|) 來組合乙個模式的各個部分是很有用。例如, 'industr(?:y|ies) 就是乙個比 'industry|industries' 更簡略的表示式。

//捕獲性分組匹配

var str1 = '000aaa111';

var pattern = /([a-z]+)(\d+)/;

var arr = pattern.exec(str1);

console.log(arr) //['aaa111','aaa','111']

//非捕獲性分組

var str2 = '000aaa111';

var pattern2 = /(?:[a-z]+)(?:\d+)/;

var arr2 = pattern2.exec(str2);

console.log(arr2) //['aaa111']

前瞻:(?=)和(?!)

前瞻分為正向前瞻和反(負)向前瞻,正向前瞻(?=表示式)表示後面要有什麼,反向前瞻(?!=表示式)表示後面不能有什麼。前瞻分組會作為匹配校驗,但不出現在匹配結果字元裡面,而且不作為子匹配返回。

(?=pattern),正向預查,在任何匹配 pattern 的字串開始處匹配查詢字串。這是乙個非獲取匹配,也就是說,該匹配不需要獲取供以後使用。例如,'windows (?=95|98|nt|2000)' 能匹配 "windows 2000" 中的 "windows" ,但不能匹配 "windows 3.1" 中的 "windows"。

(?!pattern),負向預查,在任何不匹配 pattern 的字串開始處匹配查詢字串。這是乙個非獲取匹配,也就是說,該匹配不需要獲取供以後使用。例如'windows (?!95|98|nt|2000)' 能匹配 "windows 3.1" 中的 "windows",但不能匹配 "windows 2000" 中的 "windows"。

後顧:(?<=)和(?

後顧分為正向後顧和反(負)向後顧,正向後顧(?<=表示式)表示前面要有什麼,反向後顧(?提取:和. 之間的字串

function getresult(str)

getresult('my name is ::jerry. my age is:12.');

//返回["jerry","12"];

正規表示式 正規表示式 總結

非負整數 d 正整數 0 9 1 9 0 9 非正整數 d 0 負整數 0 9 1 9 0 9 整數 d 非負浮點數 d d 正浮點數 0 9 0 9 1 9 0 9 0 9 1 9 0 9 0 9 0 9 1 9 0 9 非正浮點數 d d 0 0 負浮點數 正浮點數正則式 英文本串 a za z...

正規表示式 表示式

網域名稱 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 5 6 7 8 9 18 0 1 2 3 5 6 7 8 9 d 號碼 x x x...

Linux正規表示式 編寫正規表示式

為了所有實用化的用途,你可以通過使用程式產生正確的結果。然而,並不意味著程式總是如你所願的那樣正確地工作。多數情況下,如果程式不能產生想要的輸出,可以斷定真正的問題 排除輸入或語法錯誤 在於如何描述想要的東西。換句話說,應該考慮糾正問題的地方是描述想要的結果的表示式。表示式不完整或者公式表示得不正確...