正規表示式

2021-07-24 01:20:26 字數 4714 閱讀 2308

regexp?

正規表示式(regular expression)是一種文字模式,包括普通字元(例如,a 到 z 之間的字母)和特殊字元(稱為」元字元」)。

正規表示式使用單個字串來描述、匹配一系列匹配某個句法規則的字串。正規表示式是煩瑣的,但它是強大的,學會之後的應用會讓你除了提高效率外,會給你帶來絕對的成就感。

語法

var patt=new

regexp(pattern,modifiers);

或更簡單的方法

var patt=/pattern/modifiers;

模式描述了乙個表示式模型。

修飾符(modifiers)描述了檢索是否是全域性,區分大小寫等。

i - 修飾符是用來執行不區分大小寫的匹配。

g - 修飾符是用於執行全文的搜尋(而不是在找到第乙個就停止查詢,而是找到所有的匹配)

m - 多行匹配模式

在字串中不區分大小寫找」runoob」:var patt1 = /runoob/i; 全文查詢 「is」: var patt1=/is/g;

全文查詢和不區分大小寫搜尋 「is」 var patt1=/is/gi;

注意:當使用建構函式創造正則物件時,需要常規的字元轉義規則(在前面加反斜槓 \)。比如,以下是等價的:

var re = new

regexp("\\w+");

var re = /\w+/;

與正規表示式相關的方法

string的方法:match()返回匹配的陣列;

string的方法:replace()返回替換後的字串;

string的方法:search()引數也可以接受正規表示式,返回第乙個與之匹配的子串的起始位置,如果找不到返回-1;

string的方法:split()引數也可以接受正規表示式;

regexp的方法: exec()返回匹配的陣列;

regexp的方法: test()返回boolean;

元字元(只列出常用部分)

^ —-匹配輸入字串的開始位置。如果設定了 regexp 物件的 multiline 屬性,^ 也匹配 『\n』 或 『\r』 之後的位置。 −−

−−匹配

輸入字元

串的結束

位置。如

果設定了

rege

xp物件

的mul

tili

ne屬性

, 也匹配 『\n』 或 『\r』 之前的位置。

* —-匹配前面的子表示式零次或多次。例如,zo* 能匹配 「z」 以及 「zoo」。* 等價於。

+ —-匹配前面的子表示式一次或多次。例如,』zo+』 能匹配 「zo」 以及 「zoo」,但不能匹配 「z」。+ 等價於 。

? —-匹配前面的子表示式零次或一次。例如,」do(es)?」 可以匹配 「do」 或 「does」 中的」do」 。? 等價於 。

當該字元緊跟在任何乙個其他限制符 (*, +, ?, , , ) 後面時,匹配模式是非貪婪的。

非貪婪模式盡可能少的匹配所搜尋的字串,而預設的貪婪模式則盡可能多的匹配所搜尋的字串。

例如,對於字串 「oooo」,』o+?』 將匹配單個 「o」,而 『o+』 將匹配所有 『o』。

( ) —-標記乙個子表示式的開始和結束位置。子表示式可以獲取供以後使用。要匹配這些字元,請使用 ( 和 )。

—-n 是乙個非負整數。匹配確定的 n 次。例如,』o』 不能匹配 「bob」 中的 『o』,但是能匹配 「food」 中的兩個 o。

—-n 是乙個非負整數。至少匹配n 次。例如,』o』 不能匹配 「bob」 中的 『o』,但能匹配 「foooood」 中的所有 o。

『o』 等價於 『o+』。』o』 則等價於 『o*』。

—-m 和 n 均為非負整數,其中n <= m。最少匹配 n 次且最多匹配 m 次。例如,」o」 將匹配 「fooooood」 中的前三個 o。

『o』 等價於 『o?』。請注意在逗號和兩個數之間不能有空格。

x|y —-匹配 x 或 y。例如,』z|food』 能匹配 「z」 或 「food」。』(z|f)ood』 則匹配 「zood」 或 「food」。

[xyz] —-字元集合。匹配所包含的任意乙個字元。例如, 『[abc]』 可以匹配 「plain」 中的 『a』。

[^xyz] —-負值字元集合。匹配未包含的任意字元。例如, 『[^abc]』 可以匹配 「plain」 中的』p』、』l』、』i』、』n』。

[a-z] —-字元範圍。匹配指定範圍內的任意字元。例如,』[a-z]』 可以匹配 『a』 到 『z』 範圍內的任意小寫字母字元。

[^a-z] —–負值字元範圍。匹配任何不在指定範圍內的任意字元。例如,』[^a-z]』 可以匹配任何不在 『a』 到 『z』 範圍內的任意字元。

\b —–匹配乙個單詞邊界,也就是指單詞和空格間的位置。例如, 『er\b』 可以匹配」never」 中的 『er』,但不能匹配 「verb」 中的 『er』。

\b —-匹配非單詞邊界。』er\b』 能匹配 「verb」 中的 『er』,但不能匹配 「never」 中的 『er』。

\d —-匹配乙個數字字元。等價於 [0-9]。 \d 匹配乙個非數字字元。等價於 [^0-9]。

\s —-匹配任何unicode空白字元,包括空格、製表符、換頁符等等。等價於 [ \f\n\r\t\v]。

\s —-匹配任何非空白字元。等價於 [^ \f\n\r\t\v]。

\w —-匹配包括下劃線的任何ascii字元組成的單詞。等價於』[a-za-z0-9_]』。 \w 匹配任何非單詞字元。等價於 『[^a-za-z0-9_]』。

\num —-匹配 num,其中 num 是乙個正整數。對所獲取的匹配的引用。例如,』(.)\1』 匹配兩個連續的相同字元。

常用的正規表示式整理

//1.匹配開頭的空格多次或者0次和結尾的空格多次或者0次

var str1 = " ab c ";

var reg1 = /(^\s*)|(\s*$)/g;

lg(reg1.test(str1));

//2.使用者名稱

var str2 = "aaaz3_545--";

var reg2 = /^[a-za-z0-9_-]$/;//包含字母數字下劃線及連字元的3-16位使用者名稱

lg(reg2.test(str2));

//3.密碼

var reg3 = /^[a-za-z0-9_-]$/;

//4.手機號碼

var str4 = "13611243092";

var reg4 = /^1[34578]\d$/;

//var reg4 = /^1(3|4|5|7|8)\d$/;

lg(reg4.test(str4));

//5.國內**

var str5 = "010-12345678";

var reg5 = /\d-\d|\d-\/;

lg(reg5.test(str5));

//6.電子郵箱

var str6 = "[email protected]";

// var reg6 = /^[a-za-z0-9_-]+@[a-za-z0-9_-]+(\.[a-za-z0-9_-]+)+$/;//只允許英文本母、數字、下劃線、英文句號、以及中劃線組成

var reg6 = /^[\w-]+@[\w-]+(\.[\w-]+)+$/;

lg(reg6.test(str6));

//7.中文字元

var reg7 = /[\u4e00-\u9fa5]/;

var str8 = "173714659";

var reg8 = /^[1-9]\d$/;//第一位不能為0

lg(reg8.test(str8));

//9.匹配**

var reg9 = /^[a-za-z]+\:\/\/[^\s]*$/;

var reg9 = /^(https?:\/\/)?([\da-z\.-]+)\.([a-z\.])([\/\w \.-]*)*\/?$/;//匹配url

var str10 = "741000";

var reg10 = /[1-9]\d(?!\d)/;

lg(reg10.test(str10));

//11.匹配18位身份證號

var str11 = "620502199105196131";

// var reg11 = /^(\d)(\d)(\d)(\d)(\d)([0-9]|x)$/;

var reg11 = /^\d(\d|x|x)$/;

lg(reg11.test(str11));

//12.非負整數

var reg12 = /^[1-9]\d*|0$/;

//13.非正整數

var reg13 = /^-[1-9]\d*|0$/;

//14.整數

var reg14 = /^-?[1-9]\d*$/;

//15.正的浮點數:123.123 / 0.123

var reg15 = /^[1-9]\d*\.\d*|0\.\d*[1-9]\d*$/;

標籤

var str16 = "123

";var reg16 = /^<([a-z]+)([^<]+)*(?:>(.*)<\/\1>|\s+\/>)$/;

lg(reg16.test(str16));

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

非負整數 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正規表示式 編寫正規表示式

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