正則表達式學(xué)習(xí)(一)

一 正在表達式的概述

1毕谴、正則表達式

正則表達式描述了一種字符串匹配的模式成畦,可以檢查一個字符串是否含有某種子字符串,將匹配到的子字符串用來提取出來或者做替換涝开。

模式:使用一種特殊符號來實現(xiàn)字符串的匹配羡鸥。

本文以javascript來闡述正則表達式的基礎(chǔ)知識和使用

功能:使用一種特殊符號來實現(xiàn)字符串的匹配

var  reg = /\d/gi;

mysql如何匹配:

① 精準匹配 :select * from goods where title=’iphone 7 plus’;  //一條

② 模糊匹配 :select * from goods where title like ‘%iphone 7 plus%’;  //多條

2、為什么要使用正則表達式

數(shù)據(jù)隱藏 (188********092張武功)

數(shù)據(jù)采集 (數(shù)據(jù)爬蟲)

數(shù)據(jù)過濾 (數(shù)據(jù)敏感詞過濾忠寻,比如一些侮辱性詞語)

數(shù)據(jù)驗證 (表單驗證常用惧浴,比如 手機號驗證、郵箱驗證...)

3奕剃、快速入門

例1:查找一個字符串中是否具有數(shù)字“8”(可以使用indexOf)

var a1 = 'ni shi ge hen shuai de ren';
var a2 = 'ni shi ge bu shuai de ren 12800,.....';
var reg = /8/gi
//1衷旅、 test() 檢測子字符串是否存在,返回boolean值
console.log(reg.test(a1))
/* 結(jié)果false */
console.log(reg.test(a2))
/* 結(jié)果true */

例2:查找一個字符串中是否具有數(shù)字(數(shù)字是從0-9纵朋,可以使用charAt)

var a1 = "xiyangyang";
var a2 = "xiyangyang2";
var reg = /\d/gi
reg.test(a1); /* 結(jié)果false */
reg.test(a2); /* 結(jié)果true */

例3:查找一個字符串中是否具有非數(shù)字

var b1 = "zhongguo";
var b2 = "zhongguonihaoa10-01";
var reg = /\D/i;
reg.test(b1);
/* 結(jié)果true */
reg.test(b2);
/* 結(jié)果true */

二柿顶、正則對象

1、為什么要使用正則對象呢操软?

在實際應(yīng)用中嘁锯,要使用正則表達式必須有一個前提,首先要創(chuàng)建正則對象

2聂薪、創(chuàng)建正則對象

①隱式創(chuàng)建

var 正則對象 = /正則表達式/匹配模式

②直接實例化

var 正則對象 = new RegExp('正則表達式', '匹配模式')

問題:隱式創(chuàng)建與直接實例化有什么區(qū)別呢?

答:兩者之間的功能是完全一致的家乘,都是為了獲得正則對象。但是兩者之間的區(qū)別主要在于語法的不同藏澳。

例:求三位連續(xù)的數(shù)字

隱式創(chuàng)建:

var reg = /\d\d\d/gi;

直接實例化

var reg = new RegExp('\\d\\d\\d');

由以上代碼可知仁锯,兩者功能完全一致,唯一區(qū)別在于語法的不同翔悠,直接實例化RegExp中业崖,正則表達式需要對反斜杠 \進行轉(zhuǎn)義操作

var a = "123abc567cvs";
var reg = new RegExp('\\d\\d\\d','gi');
reg.test(a);
//結(jié)果true

3、匹配模式

基礎(chǔ)語法

var reg = /正則表達式/匹配模式
g:global縮寫蓄愁,代表全局匹配双炕,匹配出所有滿足條件的結(jié)果
i: ignore縮寫,代表忽略大小寫撮抓,匹配時妇斤,會自動忽略字符串的大小

示例代碼

var str = "abcdefg"
var reg = /cde/gi
console.log(reg.test(str))
/*結(jié)果true*/

4、 與正則表達式相關(guān)的幾個方法

① RegExp類下的方法(reg.test或 reg.exec)

test(str):判斷字符串中是否具有指定模式的子字符串,返回結(jié)果是一個布爾類型的值

exec(str):返回字符串中指定模式的子字符串趟济,一次只能獲取一個與之匹配的結(jié)果

示例


    <!--一個輸入框和兩個按鈕-->

    <!--引入jquery.js 不引入的可寫原生js-->

          /*獲取btn1按鈕并綁定點擊事件*/

$("#btn1").onclick = function(){

                /*獲取文本框的值*/

let content = $('#content').value;

                /*獲取正則對象,規(guī)則三位挨著的數(shù)字*/

let reg = /\d\d\d/gi

                /*判斷*/

alert(reg.test(content));

}

          /*獲取btn2按鈕并綁定點擊事件*/

$("#btn2").onclick = function(){

              /*獲取文本框的值*/

let content = $('#content').value;

              /*獲取正則對象,規(guī)則三位挨著的數(shù)字*/

let reg = /\d\d\d/gi

              /*輸出匹配到的數(shù)據(jù)*/

alert(reg.exec(content));

}

② String類下的方法(str.方法(reg))

String.search(reg):與indexOf非常類型乱投,返回指定模式的子串在字符串中首次出現(xiàn)的位置。

String.match(reg):以數(shù)組的形式返回指定模式的字符串顷编,可以返回所有的匹配的結(jié)果戚炫。

String.replace(reg, '替換后的字符'):把指定模式的子串進行替換操作。

String.split(reg):以指定模式分割字符串媳纬,返回結(jié)果為數(shù)組双肤。

示例:使用以上方法查找字符串中三個連續(xù)數(shù)字


var str = "abcd345efg188vbncmd255hjak";

var reg = /\d\d\d/gi;

/*String.search(reg)  返回子串首次出現(xiàn)的位置*/

console.log(str.search(reg));/*結(jié)果: 4 */

/*String.match(reg)  返回所有匹配結(jié)果*/

console.log(str.match(reg));/*結(jié)果: ["345", "188", "255"] */

/*String.replace(reg)  返回所有匹配結(jié)果*/

console.log(str.replace(reg, '帥'));/*結(jié)果: abcd帥efg帥vbncmd帥hjak */

/*String.split(reg)  返回所有匹配結(jié)果*/

console.log(str.split(reg));/*結(jié)果: ["abcd", "efg", "vbncmd", "hjak"] */

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市钮惠,隨后出現(xiàn)的幾起案子茅糜,更是在濱河造成了極大的恐慌,老刑警劉巖素挽,帶你破解...
    沈念sama閱讀 218,607評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蔑赘,死亡現(xiàn)場離奇詭異,居然都是意外死亡预明,警方通過查閱死者的電腦和手機缩赛,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,239評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來撰糠,“玉大人酥馍,你說我怎么就攤上這事≡睦遥” “怎么了旨袒?”我有些...
    開封第一講書人閱讀 164,960評論 0 355
  • 文/不壞的土叔 我叫張陵,是天一觀的道長术辐。 經(jīng)常有香客問我砚尽,道長,這世上最難降的妖魔是什么术吗? 我笑而不...
    開封第一講書人閱讀 58,750評論 1 294
  • 正文 為了忘掉前任尉辑,我火速辦了婚禮帆精,結(jié)果婚禮上较屿,老公的妹妹穿的比我還像新娘。我一直安慰自己卓练,他們只是感情好隘蝎,可當我...
    茶點故事閱讀 67,764評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著襟企,像睡著了一般嘱么。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上顽悼,一...
    開封第一講書人閱讀 51,604評論 1 305
  • 那天曼振,我揣著相機與錄音几迄,去河邊找鬼。 笑死冰评,一個胖子當著我的面吹牛映胁,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播甲雅,決...
    沈念sama閱讀 40,347評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼解孙,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了抛人?” 一聲冷哼從身側(cè)響起弛姜,我...
    開封第一講書人閱讀 39,253評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎妖枚,沒想到半個月后廷臼,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,702評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡绝页,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,893評論 3 336
  • 正文 我和宋清朗相戀三年中剩,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片抒寂。...
    茶點故事閱讀 40,015評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡结啼,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出屈芜,到底是詐尸還是另有隱情郊愧,我是刑警寧澤,帶...
    沈念sama閱讀 35,734評論 5 346
  • 正文 年R本政府宣布井佑,位于F島的核電站属铁,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏躬翁。R本人自食惡果不足惜焦蘑,卻給世界環(huán)境...
    茶點故事閱讀 41,352評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望盒发。 院中可真熱鬧例嘱,春花似錦、人聲如沸宁舰。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,934評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蛮艰。三九已至腋腮,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背即寡。 一陣腳步聲響...
    開封第一講書人閱讀 33,052評論 1 270
  • 我被黑心中介騙來泰國打工徊哑, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人聪富。 一個月前我還...
    沈念sama閱讀 48,216評論 3 371
  • 正文 我出身青樓实柠,卻偏偏與公主長得像,于是被迫代替她去往敵國和親善涨。 傳聞我的和親對象是個殘疾皇子窒盐,可洞房花燭夜當晚...
    茶點故事閱讀 44,969評論 2 355