概念:正規表示式就是乙個表示式,匹配特殊字元或有特殊字元搭配原則的字元的最佳選擇。
1.
var reg =
/abc/
;//字面量建立相當於和建立陣列相同,直接建立
2.var reg =
newregexp
('abc'
);使用建構函式建立,第乙個引數是規則,第二個引數是屬性,引數都寫字串形式的
使用new regexp 和不使用new的區別在於:不new那麼字面量的正則和建立的正則指向同乙個人(返回的就是裡面的正規表示式的引用) :使用new 那麼就不是同乙個人。
reg.
test
(str)
;測試正規表示式是否被包含在str裡面
str.
match
(reg)
;字串的方法,返回字串匹配正規表示式的值,在不使用全域性查詢(g)的情況下找到乙個就返回的
g代表的是global全域性匹配,但是如果多行的話只會匹配第一行
i代表ignorecase忽略大小寫,
m代表multiline多行匹配,
\ 轉義字元
\n 換行
\r 行結束
\t 乙個table(4個空格)
\空白 轉義空白(換行)用使字串換行使用
| 或
中除-需要轉義以外,其他字元都不需要,都能識別
乙個代表一位,匹配中的任意一位
[^]^放在表示式裡面就叫非,放外面叫以什麼開頭
[abc] 查詢方括號內的任意乙個字元
[^abc] 查詢任何不在方括號內的字元
[0-9] 查詢0-9之間的數字
[a-z] 查詢任何小寫字母
[a-z] 查詢任何大寫字母
[a-z] 查詢任何字母
(red|blue|green) 查詢指定字串(子表示式) | 這個叫或者的意思(abc|bcd|abc)
()子表示式: /(a)\1/ : \1引用第乙個子表示式的內容(反向引用)注意$1表示第乙個子表示式的內容
使用該子表示式會把子表示式的內容匹配出來掛上,可以使用console.log(reg.exec(str))檢視(str.match也是相同的,在不加g的情況下)
以下均遵循貪婪匹配:
n+ 匹配任何包含至少乙個n的字元(這個n可以出現1到無數次)(符合貪婪匹配原則)
n* 匹配任何包含0個或多個n的字元(這個n可以出現0到無數次)
var reg = /\w*/ var str = 'abc' str.match(reg) == ['abc', '']會多匹配乙個邏輯上的空出來
如果reg = /\d*/ 那麼看游標,幾個游標幾個空
n? 匹配任何0個或乙個n的字元
n 匹配x個n的序列字串
n 匹配x至y個n的序列字串
n$ 匹配以n結尾的字串
^n 匹配任何以n開頭的字串
?=n 正向肯定預查匹配任何後面緊接著指定字串n的字串
?!n 正向否定預查匹配任何其後沒有緊接著指定字串n的字串
?<=n 反向肯定預查匹配任何前面緊跟著指定字串n的字串
?補充(?:n) 匹配時子表示式中沒有這一項(不補獲分組)
global 檢視regexp物件是否具有g標誌
ignorecase 檢視regexp物件是否具有i標誌
multiline 檢視regexp物件是否具有m標誌
source 檢視正規表示式源文字
lastindex 乙個整數標誌開始下一次匹配的字元位置(一般與exec一起使用)
compile 編譯正規表示式。 (就是改變這個正規表示式)
exec(重要的方法) 檢索字串中指定的值。返回找到的值,並確定其位置。(如果屬性不加g那麼 lastindex永遠是第一位)
test 檢索字串中指定的值。返回 true 或 false。
search 檢索正規表示式相匹配的值(返回匹配到的位置,中關心能不能匹配到,不關心能匹配多少個,所以加不加g都一樣,匹配不到返回-1)
match 查詢所有符合正則匹配條件的結果
replace(重要) 替換與正規表示式匹配的字串(不寫正則的時候只能替換乙個,它沒有訪問全域性的權利)
split 把字串分割成陣列(注: 用字表示式分割的話會保留子表示式)
正規表示式實現aabb的形式變成bbaa
var str =
'aabbccdd'
;var reg =
/(\w)\1(\w)\2/g
;var str1 = str.
replace
(reg,
function
($, $1
,$2)
) console.
log(str1)
;//bbaaddcc
給10000000000三位打點 變成 10.000.000.000
var str =
'10000000000'
;var reg =
/(?=(\b)(\d)+$)/g
; str.
replace
(reg,
'.')
;
字串去重 aaaaaaaaaaaaaaaaaaaaaabbbbbbbbcccccccccc變成abc
var str =
'aaaaaaaaaaaaaaaaaaaaaabbbbbbbbcccccccccc'
;var reg =
/(\w)\1*(\w)\2*(\w)\3*/g
;str.
replace
(reg,
function
($, $1
, $2
, $3))
;//"abc"
把the-first-name轉換成小駝峰式thefirstname
var str =
'the-first-name'
;var reg =
/-(\w)/g
;str.
replace
(reg,
function
($, $1))
//thefirstname
匹配結尾的數字
//結尾是否為數字
var str =
'dkfdj1232'
;var reg =
/\d$/g
;str.
match
(reg)
;//["2"]
//首或者尾是否為數字
reg =
/'^\d|\d$'/g
//首尾都為數字
reg =
/'^\d[\s\s]*\d$'/g
統一空格數
var str =
' fkjdf '
;var reg =
/\s+/g
; str.
replace
(reg,
' ')
;//" fkjdf "
判斷字串是不是由數字構成
var str =
'fdjfd214234234'
;var reg =
/(\d*?:[a-za-z])/g
; reg.
test
(str)
;// false
刪除字串中的空格
//刪除前後空格
var str =
' d kdfjd dfjdkf '
;var reg =
/(^\s*)|(\s*)$/g
; str.
replace
(reg,'')
;//"d kdfjd dfjdkf"
//刪除所有空格
var reg =
/(\s*)/g
;str.
replace
(reg,'')
;//"dkdfjddfjdkf"
身份證號匹配
var str =
'12345678976543879x'
;var reg =
/(^\d$)|(^\d$)|(^\d(\d|x|x)$)/
;//不需要全域性匹配
reg.
test
(str)
;
郵箱位址驗證
var str =
;var reg =
/^[0-9a-za-z_-]+@[0-9a-za-z_-]+(\.[0-9a-za-z_-]+)+$/
;reg.
test
(str)
;
正規表示式知識點
re.match與re.search的區別 re.match只匹配字串的開始,如果字串開始不符合正規表示式,則匹配失敗,函式返回none 而re.search匹配整個字串,直到找到乙個匹配。flags 標誌位,用於控制正規表示式的匹配方式,如 是否區分大小寫,多行匹配等等 import re s 1...
正規表示式知識點
正則的知識點 1.建立例項 var reg new regexp pattern,flag d g 2.flag 識別符號 1.i 忽略大小寫匹配 2.m 多行匹配 3.g 全域性匹配 應用與所有,而不是找到第乙個就停止 3.第一段知識點 1.xyz xyz中任意乙個字元 等價於 x z 2.xyz...
正規表示式及知識點總結
match 字串用法 成功則返回值,錯誤則返回null var str 18229096120 str.match test 正則物件用法 成功則返回true,錯誤則返回false 宣告正則變數 var reg new regexp reg.test str 匹配字串的開頭,在多行檢索中,匹配一行的...