首頁 > web前端 > js教程 > 主體

關於js正規表示式詳解

迷茫
發布: 2017-03-26 17:21:14
原創
1477 人瀏覽過

正規表示式非常有用,尋找、匹配、處理字串、替換和轉換字串,輸入輸出等。下面整理一些常用的正規表示式。

常用的正規字元

1.\ :將下一個字元標記為一個特殊字元、或一個原義字元、或一個向後引用、或一個八進位轉義符。例如,'n' 匹配字元 "n"。 'n' 符合一個換行符。序列'\' 匹配"" 而"(" 則匹配"("。

#2.^ :符合輸入字串的開始位置。 ##$

:符合輸入字串的結束位置。 4.*

:符合前面的子運算式零次或多次。符合"z" 以及"zoo"。 :符合前面的子表達式一次或多次。 ##6.?:符合前面的子表達式零次或一次。可以符合"do" 或"does" 中的"do" 。 }

:n 是一個非負整數。的兩個o。匹配n 次。 o{0,}' 則等價於'o*'。 ##:m 和n 均為非負整數,其中n <= m。 。 #?:當字元緊接在任何其他限制符(*, +, ?, {n}, {n,}, {n,m}) 後面時,匹配模式是非貪婪的。非貪婪模式盡可能少的匹配所搜尋的字串,而預設的貪婪模式則盡可能多的匹配所搜尋的字串。例如,對於字串 "oooo",'o+?' 將匹配單個 "o",而 'o+' 將匹配所有 'o'。 11.

·#:符合 "n" 以外的任何單一字元。若要符合包括 'n' 在內的任何字符,請使用象 '[.n]' 的模式。 12.

(pattern):符合 pattern 並取得此符合。所取得的符合可以從產生的 Matches 集合中得到,在VBScript 中使用 SubMatches 集合,在JScript 中則使用 $0…$9 屬性。若要匹配圓括號字符,請使用 '(' 或 ')'。

13.(?:pattern):匹配pattern 但不取得匹配結果,也就是說這是一個非獲取匹配,不進行儲存以供以後使用。這在使用 "或" 字元 (|) 來組合一個模式的各個部分是很有用。例如, 'industr(?:y|ies) 就是一個比 'industry|industries' 更簡單的表達式。

14.(?=pattern):正向預查,在任何符合pattern 的字串開始處匹配查找字串。這是一個非獲取匹配,也就是說,該匹配不需要獲取供以後使用。例如,'Windows (?=95|98|NT|2000)' 能符合 "Windows 2000" 中的 "Windows" ,但不能符合 "Windows 3.1" 中的 "Windows"。預查不消耗字符,也就是說,在一個匹配發生後,在最後一次匹配之後立即開始下一次匹配的搜索,而不是從包含預查的字符之後開始。

15.(?!pattern):負向預查,在任何不符合pattern 的字符字串開始處匹配查找字串。這是一個非獲取匹配,也就是說,該匹配不需要獲取供以後使用。例如 'Windows (?!95|98|NT|2000)' 能符合 "Windows 3.1" 中的 "Windows",但不能符合 "Windows 2000" 中的 "Windows"。預查不消耗字符,也就是說,在一個匹配發生後,在最後一次匹配之後立即開始下一次匹配的搜索,而不是從包含預查的字符之後開始

16.x|y:符合x 或y。例如,'z|food' 能匹配 "z" 或 "food"。 '(z|f)ood' 則符合 "zood" 或 "food"。

17.[xyz]:字元集合。匹配所包含的任意一個字元。例如, '[abc]' 可以符合 "plain" 中的 'a'。

18.[^xyz]:負值字元集合。匹配未包含的任意字元。例如, '1' 可以符合 "plain" 中的'p'。

19.[a-z]:字元範圍。符合指定範圍內的任意字元。例如,'[a-z]' 可以匹配 'a' 到 'z' 範圍內的任意小寫字母字元。

20.[^a-z]:負值字元範圍。匹配任何不在指定範圍內的任意字元。例如,'2' 可以匹配任何不在 'a' 到 'z' 範圍內的任意字元。

21.\b#:符合一個單字邊界,也就是指單字和空格間的位置。例如, 'erb' 可以匹配"never" 中的 'er',但不能匹配 "verb" 中的 'er'。

22.\B#:符合非單字邊界。 'erB' 能符合 "verb" 中的 'er',但不能符合 "never" 中的 'er'。

23.\cx#:符合 x 所指明的控製字元。例如, cM 會比對一個 Control-M 或回車符。 x 的值必須為 A-Z 或 a-z 之一。否則,將 c 視為一個原義的 'c' 字元。

24.\d#:符合一個數字字元。等價於 [0-9]。

25.\D#:符合一個非數字字元。等價於 3。

26.\f#:符合一個換頁符號。等價於 x0c 和 cL。

27.\n: Matches a newline character. Equivalent to x0a and cJ.

28.\r: Matches a carriage return character. Equivalent to x0d and cM.

29.\s: Matches any whitespace characters, including spaces, tabs, and form feeds etc. Equivalent to [fnrtv].

30.\S: Matches any non-whitespace characters. Equivalent to 4.

31.\t: Matches a tab character. Equivalent to x09 and cI.

32.\v: Matches a vertical tab character. Equivalent to x0b and cK.

33.\w: Matches any word character including an underscore. Equivalent to '[A-Za-z0-9_]'.

34.\W: Matches any non-word characters. Equivalent to '5'.

35.\xn: Match n, where n is a hexadecimal escape value. The hexadecimal escape value must be exactly two digits long. For example, 'x41' matches "A". 'x041' is equivalent to 'x04' & "1". ASCII encoding can be used in regular expressions.

36.\num: Matches num, where num is a positive integer. A reference to the match obtained. For example, '(.)1' matches two consecutive identical characters.

37.\n: Identifies an octal escape value or a backward reference. If n is preceded by at least n fetched subexpressions, n is a backward reference. Otherwise, if n is an octal number (0-7), then n is an octal escape value.

38.\nm: Identifies an octal escape value or a backward reference. nm is a backward reference if nm is preceded by at least nm obtainable subexpressions. If nm is preceded by at least n obtains, then n is a backward reference followed by the literal m. If neither of the previous conditions is true, and if n and m are both octal digits (0-7), nm will match the octal escape value nm.

39.\nml: If n is an octal number (0-3), and m and l If they are all octal numbers (0-7), they match the octal escape value nml.

RegExp type

ECMAScript supports regular expressions through the RegExp type, as follows:

809850ac8d5baebf1139536570bab013

(\d{3}\d{4}\d{4}) 可以匹配完整的手机号,并分别提取前3位、4-7位和8-11位,"$1 $2 $3" 是在三个结果集中间加空格组成新的字符串,然后替换完整的手机号。

常用实例

匹配第一个bat或者cat,不区分大小写: <span style="color: #ff0000;">/[bc]at/i</span> 或者 new RegExp("[bc]at","i");

匹配所有以"at"结尾的3个字符组合,不区分大小写:/.at/gi;

只能输入数字:^[0-9]*$;

只能输入n位的数字:^\d{n}$

只能输入至少n位的数字:^\d{n,}$

只能输入m~n位的数字:^\d{m,n}$

只能输入零和非零开头的数字:^(0|[1-9][0-9]*)$

只能输入有两位小数的正实数:^[0-9]+(.[0-9]{2})?$

只能输入有1~3位小数的正实数:^[0-9]+(.[0-9]{1,3})?$

只能输入非零的正整数:^\+?[1-9][0-9]*$

只能输入长度为3的字符:^.{3}$

You can only enter a string consisting of 26 English letters: ^[A-Za-z]+$

You can only enter a string consisting of numbers and 26 English letters: ^[A-Za-z0-9]+$

You can only enter a string consisting of numbers, 26 English letters or underscores: ^\w+$

##Verify User password: starts with a letter, is between 6 and 18 in length, and can only contain characters, numbers and underscores: ^[a-zA-Z]\w{5,17}$

Verify whether it contains characters such as ^%&',;=?$": [^%&',;=?$\x22]+

Only Chinese characters can be entered: ^[\u4e00-\u9fa5]{0,}$

Verify email address: ^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+( [-.]\w+)*$

Verify InternetURL: ^http://([\w-]+\. )+[\w-]+(/[\w-./?%&=]*)?$

Verify ID number (15 digits or 18 digits): ^\d{15}|\d{18}$

Verify IP address: ^((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[ 0-5]|[01]?\d\d?)$

Matches two overlapping characters, for example, "aabbc11asd", return The result is aa bb 11 three sets of matches: (\w)\1

## Matching pairs of HTML tags:

<(?[^\s>]+)[^>]*>.*>

Match numbers between 1-58:

/^([1-9]|[1-5][0-8])$/Match integers between -90 and 90 (including -90 and 90):

^(-?[1-8][0-9]|-?[1-9]|-?90|0 )$

以上是關於js正規表示式詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新問題
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板