標籤:添加 xxx perl 理解 attribute style 等價 space string
一、Regex
提示:此專題需要多輪複習反覆的加深和理解
Regex的兩種用法:
1)regexp.xxx(string);
2)string.yyy(regexp);
驗證使用者輸入的手機號格式是否合法 var regexp=/^1[3-8]\d{9}$/; var input="15012345678"; console.log(regexp.test(input))
Regex主要用於表單驗證
1、直接量字元
定義一個Regex對象可以使用perl風格的直接量文法
/pattern/attributes
說明
直接量字串左右不能添加‘或者”(引號)
兩個/不能省略
參數pattern是一個Regex字串
參數attribute是一個可選的字串,可以在“g”,“i”和“m”範圍內指定,分別用於指定全域匹配、區分大小寫匹配和多行匹配
2、字元類
所有的單個大小寫字母、數字都是一個Regex,用以匹配單個字元,這個字元與它本身相同
var regexp=/ipod/; var data=‘apple ipod is No.123 cool?‘; console.log(regexp.test(data));//false var regexp=/ipod/; var data=‘apple ipod is No.123 cool?‘; console.log(regexp.test(data));//true
View Code
Regex有些字元有特殊的文法含義,是不能直接使用的,必須使用\進行轉義後才能使用
. \ / * ? + [ ( ) ] { } ^ $ |
位置匹配
^ 在/[^123]/ 表示匹配除了123的
/^1[123]/ 表示包含123的並且以1開頭的
$ 表示以什麼結尾
| /[123|456]/ 表示匹配123或者456其中一個
, /[123x,]/ 表示匹配123x中任意一個
\b 表示匹配字元的邊界
\B 匹配字串的非邊界 例子:“his history is so” 如果匹配history中的his /[/bhis/B]
3、重複
Regex中可以使用如下特殊字元定義字元的出現頻次---量詞元字元
重複字元 含義 樣本n? 匹配零次或者一次字元n /a?/n* 匹配零次或者多次字元n /a*/n+ 匹配一次或者多次字元n /a+/n{x} 匹配字元n出現x次 /a{3}/ /\d{9}/表示數字出現9次 n{x,y} 匹配字元n出現x到y次 /a{2,4}/ n{x,} 匹配字元n的出現>=x次 /a{3,}/
4、選擇、分組和引用
範圍選取,用於指定一個匹配的範圍
文法 含義 樣本[abc] 匹配指定集合內的任一個字元 /[3458]/[^abc] 匹配不在指定集合內的任一字元 /[^12679]/[a-z] 匹配任一個小寫字元 /[a-z]/[0-9] 匹配任一個數字 /0-9/[A-Z] 匹配任一個大寫字元 /A-Z/[A-z] 匹配大寫A到消協z的所有字元, /[A-z]/ 即A-Z[\]^_`a-z /[--籲]/ exp|exp2 使用|進行條件選擇 /ex|Ex|post|Post/(expl) 使用()指定分組 ------子運算式
Regex中可以使用如下元字元引用來進行簡化
1 文法 含義 樣本2 \d 匹配一個數字 /\d/等價於/[0-9]/3 \D 匹配一個非數字 /\D/等價於 /[^0-9]/4 \w 匹配一個數字/字母/底線 /\w/等價於/[0-9a-zA-Z]/5 \W 匹配一個非數字/字元/底線 /\W/等價於/[^0-9a-zA-Z]/6 \s 匹配一個空白字元(space) /\s/等價於/[\n\r\t\v\f]/7 \S 匹配一個非空白字元 /\S/等價於/[^\n\r\v\t\f]/8 . 匹配除了斷行符號和分行符號的任何單個字元 /./ 等價於 /[^\n\r]/
分組匹配 ,使用()把多個字元組成一個整體,這樣的每個整體都會自動獲得1、2、3、...這樣的分組
() /(abc){3}/ 表示以abc為一組的匹配3組
/(abc)(xvv)(xx)2/ 表示匹配(abc) (xvv)這兩個分組
/(aa)(bb)(cc)/2/ 表示匹配(bb)這個分組
5、Regex中的屬性修飾符
/運算式內容/屬性修飾符
屬性修飾符可以在下面三個範圍內選擇
1)i 匹配的時候忽略大小寫
2)g 執行全域匹配,找到一次匹配後仍然繼續,知道結尾
3)m 執行多汗匹配,會影響^(原本只匹配整個字串的開頭)和$(原來只匹配整個字串結尾)的含義,匹配每一行的開頭和結尾
第四篇、javascript