正則-RegExpspa
正則,是一條規則,用於檢驗字符串格式,目標就是字符串;regexp
只要是表單提交的數據都是字符串對象
定義:索引
1,var reg=/格式/字符串
2,var reg=new regexp()console
方法:ast
兩大功能---匹配,test() 成功就是true,反之false;test
捕獲,exec() 成功就會拿出來,沒有就是null;表單
修飾符:引用
i 忽略大小寫
g 全局匹配
m 多行匹配
如何使用修飾符:
1,var reg=/hello/gi 字面量方式
2,var reg=new regexp(「hello」g) 實例方式
正則的方括號:
[abc] 表明查找方括號中的任何字符
[^abc] 表明查找不在方括號中的字符
[0-9] 表明查找0-9之間的數字
[a-z] 表明查找小寫a到小寫z之間
[A-Z] 表明查找大寫A到大寫Z之間
[A-z] 表明查找大寫Z到小寫z之間
(red|blue|black) 查找任何指定的選項
正則的元字符:
. 表明單個字符(任意字符,數字字母下劃線空格等)
\w 表明單詞字符(數字字母下劃線)
\W 表明非單詞字符
\d 表明數字
\D 表明非數字
\s 表明空白字符
\S 表明非空白字符
\b 表明單詞邊界
\B 表明非單詞邊界
正則的量詞:
n+ 表明至少一個n的字符
n* 表明0個或多個n(添加相鄰元素)
n? 表明0個或一個n(添加相鄰元素,0個或一個所有拿走)
n{x} 包含x個n
n{x,} 包含至少x個n
n{x,y} 包含大於等於x,小於等於y個n
n$ 以n結尾
^n 以n開頭
?=n 指定字符後面緊跟
字符串方法:(跟正則有關的)
1,match()查找一個或多個和正則相匹配的,有就返回的是查找的結果,沒有就null
2,search()匹配和正則相同的字符,有就返回索引,沒有就-1
3,replace()匹配和正則相同的幷替換掉,返回的是換以後的
正則的理解:
1,貪婪性:
每一次匹配都是按最長的出結果,這種功能叫正則的貪婪性
2,懶惰性:
每一次在exec()中捕獲的時候,只捕獲第一次匹配的內容,而再也不往下捕獲了,這個叫正則的懶惰性;每一次捕獲的位置都是從0開始
如何解決正則的懶惰性?修飾符g
正則的實例對象reg上有一個lastindex屬性,他是正則捕獲的起始位置
如何解決正則的貪婪性?在元字符量詞後面加問號
分組捕獲:
正則帶(),數分組個數的時候從左往右
var reg=/(a)(b)/
至關於大正則裏面帶了兩個小正則 第一組(a)第二組(b)
分組捕獲做用:
1,改變優先級 2,分組引用 \1 \2
\1 表明和第一個分組出現如出一轍的內容
\2 表明和第二個分組出現如出一轍的內容
var reg=/(\w)\1(\w)\2/
var st="ssdd"
var s=reg.test(st)
console.log(s) //true
正則reg中的規則第一個是一個分組;且是一個單詞字符
第二個是一個分組引用;要求和第一組如出一轍
分組捕獲:
前提是正則存在分組,不只把大正則內容捕獲到,把小正則內容也捕獲到
如何解除分組捕獲:
在這個分組前面加問號冒號?: