正規表示式是一種定義字元模式的方法,我們可以拆分、查詢或替換字串中與模式字元匹配的字元。
在js中正規表示式是通過regexp物件使用的。regexp物件是js中的乙個內建物件,與date,object類似。可以通過兩種方式建立新的regexp物件。
var regexp = /\b'|'\b/;(『/』表示正規表示式的開始和結束,就像表示字串開始結束的''一樣)
var regexp = new regexp("\\b'|'\\b")
正規表示式的「匹配」有兩種概念,一種是匹配字元,一種是匹配位置,這裡的\b就是匹配位置的。
第一種方法更簡短,第二種方法允許在**執行時確定正規表示式(例如使用者輸入的內容作為表示式)。
舉例說明正規表示式:
var string = 'zhe,shi,yi,ge,zi,fu,chuan,zhen,de,shi,zi,fu,chuan'
將所有的'shi'替換為'sp'
需要查詢的文字模式是簡單的shi。將他表示為正規表示式:
var suibianqidemingzi = /shi/;
之後使用replace()方法替換:
suibianqidemingzi = string.replace(suibianqidemingzi,'sp');
【replace()方法接受兩個引數,先是regexp物件,再是要換上的內容】
regexp物件預設僅查詢與模式匹配的第乙個子串,本例中即第乙個'shi',然後停止查詢,這是regexp物件非常重要而常見的特性。(正規表示式從字串的一端開始查詢,當找到第乙個匹配的子串時,就停止查詢。)
因此新增如下屬性可避免這一特性:
g全域性搜尋。查詢所有與模式匹配的子串,而不是在找到第乙個之後就停止。
i不區分大小寫搜尋。
m多行搜尋。
具體使用如下:
var suibianqidemingzi = /shi/gi;(這樣就會執行全域性搜尋並且不區分大小寫)
正規表示式的特殊字元:
\b 匹配乙個單詞邊界,也就是指單詞和空格間的位置。例如,「er\b」可以匹配「never」中的「er」,但不能匹配「verb」中的「er」。
var a = 'never'[ ] 匹配在方括號中的字元。「[abc]」可以匹配「plain」中的「a」。var b = /er\b/
var c = a.replace(b,'lse')
c=>"nevlse"
var a = 'never'[^] 匹配未在方括號中的字元。「[^abc]」可以匹配「plain」中的「plin」。var b = [er]
var c = a.replace(b,'lse')
c=>"nevlse"
var a = 'never'\d 0~9的任意數字 例如[匹配格式如1-2-3-456-78的**號碼,可使用如下正規表示式\d-\d-\d-\d\d\d-\d\d]var b = /[^nev]/
var c = a.replace(b,'lse')
c=>"nevelse"
var a = '1,3,1,4,5,2,1,qing,ren,jie'\d 任何非數字字元var b = /\d/
var c = a.replace(b,'22')
c=>"22,3,1,4,5,2,1,qing,ren,jie"
var a = '1,3,1,4,5,2,1,qing,ren,jie'
var b = /\d/g
var c = a.replace(b,'22')
c=>"22,22,22,22,22,22,22,qing,ren,jie"
var a = ['1','3','1','4','5','2','1','qing','ren','jie']\w(小寫) 匹配乙個單字字元(字母[a~z,a~z]、數字[0~9]或者下劃線)。var b = /\d/
var c = _.map(a,function(num))
c=>["1", "3", "1", "4", "5", "2", "1", "airening", "airenen", "airenie"]
var a = '!,@,#,$,%,6,7,8,9,0,q,r,j'\w(大寫) 匹配乙個非單字字元。例如[^a-z,a-z,0-9]var b = /\w/g
var c = a.replace(b,'qaq')
c=>"!,@,#,$,%,qaq,qaq,qaq,qaq,qaq,qaq,qaq,qaq"
var a = '!,@,#,$,%,6,7,8,9,0,q,r,j'\s(小寫) 匹配乙個空白字元,包括空格、製表符、換頁符和換行符。var b = /\w/g
var c = a.replace(b,'qaq')
c=>"qaq ** qaq ** qaq ** qaq ** qaq ** qaq ** qaq ** qaq ** qaq ** qaq ** 6 ** qaq ** 7 ** qaq ** 8 ** qaq ** 9 ** qaq ** 0 ** qaq ** q ** qaq ** r ** qaq ** j"( ** 僅是分隔之用)
var a = '!,@,#,$,%,6,7,8,9,0,q,r,j,(這是空格),^,&,*,(,),~'\s(大寫) 匹配乙個非空白字元。var b = /\s/g
var c = a.replace(b,'qaq')
c"!,@,#,$,%,6,7,8,9,0,q,r,j,qaq,^,&,*,(,),~"
var a = '!,(這是空格),(這是空格),(這是空格),w,a,n'n是乙個正整數,匹配了前面乙個字元剛好發生了n次。o」不能匹配「bob」中的「o」,但是能匹配「food」中的兩個o。var b = /\s/g
var c = a.replace(b,'qaq')
c=>"qaqqaq qaq qaq qaq ** qaq ** qaq ** qaq ** qaq ** qaq"
var a = '5,5,5,5,5,22222,qqq'n是乙個正整數,匹配了前面乙個字元剛好發生了n次,或n次以上。「o」能匹配「foooood」中的所有o。var b = /2/
var c = a.replace(b,'qaq')
c=>"5,5,5,5,5,qaq,qqq"
var a = '5,5,5,5,2,22,1,222,5,22222,1,qqq'n 和 m 都是正整數。匹配前面的字元至少n次,最多m次。「o」將匹配「fooooood」中的前三個o。如果 n 或者 m 的值是0, 這個值被忽略。var b = /2/g
var c = a.replace(b,'qaq')
c=>"5,5,5,5,2,qaq,1,qaq,5,qaq,1,qqq"
var a = '5,5,5,5,2,22,3,222,5,222tt22,qqq'? 前一項出現0次或1次,「o」等價於「o?」。var b = /2/g
var c = a.replace(b,'qaq')
c=>"5,5,5,5,2,qaq,3,qaq,5,qaqttqaq,qqq"
var a = '5,2,1'+ 前一項出現1次或多次,「o」等價於「o+」。var b = /5?/g
var c = a.replace(b,'qaq')
c=>"qaq ** qaq ** , ** qaq ** 2 ** qaq ** , ** qaq ** 1 ** qaq"
var a = '5,5,5,5,2,22,3,222,5,222tt22,qqq'× 前一項出現0次或多次,「o」則等價於「o*」。var b = /5+/g
var c = a.replace(b,'qaq')
c=>"qaq,qaq,qaq,qaq,2,22,3,222,qaq,222tt22,qqq"
ar a = '5,2,1'var b = /5*/g
var c = a.replace(b,'qaq')
c=>"qaq ** qaq ** , ** qaq ** 2 ** qaq ** , ** qaq ** 1 ** qaq"
mysql正則替換欄位中部分內容
1.這個替換方法可以提換字段中那些需要被替換的內容如果是在字串中間的內容 update 資料表名 set 欄位名 replace 欄位名,要被替換的原有內容 也是要匹配的字串 眼替換的新內容 where 欄位名 regexp 要被匹配的字串 update m case data set conten...
部分正規表示式
d 非負整數 正整數 0 0 9 1 9 0 9 正整數 d 0 非正整數 負整數 0 0 9 1 9 0 9 負整數 d 整數 d d 非負浮點數 正浮點數 0 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 非正浮點數 負浮點數 ...
正規表示式部分
正規表示式是用來匹配字串的強有力 在正規表示式中,如果直接給出字元,就是精確匹配。用 d可以匹配乙個數字,w可以匹配乙個字母或者數字。要匹配變長的字元,用?表示0個或1個字元,用表示n個字元,用表示n m個字元,等等。要更精確的匹配,可以用表示範圍,比如 a b 可以匹配a或b,表示行的開頭,d 表...