正則表達(dá)式(基礎(chǔ)版)

1 正則表達(dá)式(規(guī)則表達(dá)式)
 '正則表達(dá)式是對(duì)字符串操作的一種邏輯公式',
就是事先定義好的一些特定字符,以及這些特定字符發(fā)組合,
組成一個(gè)"規(guī)則字符串",這個(gè)"規(guī)則字符串"用來(lái)表達(dá)對(duì)字符串的一種過(guò)濾邏輯
  • 正則表達(dá)式是一個(gè)字符串
  • 表示一種規(guī)則
  • 用(有)自己特定的編寫(xiě)語(yǔ)法
  • 用于對(duì)其它字符串進(jìn)行驗(yàn)證或者匹配
2 與其他語(yǔ)言的關(guān)系
  • 它是一獨(dú)立的體系,不依賴其他任何編程語(yǔ)言,(但是由于過(guò)于它很強(qiáng)大),其它的編程語(yǔ)言里面種會(huì)提供對(duì)正則表達(dá)式的支持
  • 正則表達(dá)式在編程語(yǔ)言中的寫(xiě)法都是統(tǒng)一的(php,java,js...中的正則表達(dá)式都是一樣的)
3 案例

※※生日的判斷

<form action="http://www.baidu.com">
  <input type="text" pattern="\d{4}-\d{2}-\d{2}" required placeholder="請(qǐng)輸出入生日"/>(*示例:1990-10-11)
  <input type="submit" value="提交"/>
</form>
效果.png
4 js中的正則

4.1 創(chuàng)建(RegExp)

1)構(gòu)造器創(chuàng)建:

var r1 = new RegExp( "a" );
var r2 = new RegExp( "a","gim" )
new RegExp(pattern, attributes);

2)字面量創(chuàng)建(類比創(chuàng)建對(duì)象,都有兩種方法)

  • 基本格式
var r = /字符串/;

說(shuō)明:類比如果是字符串,則前后都要加( " " )
如果是對(duì)象前后加{ }
如果是數(shù)組前后加[ ];
如果是正則前后加/ /(界定符);
類比:使用對(duì)象的屬性:用[]
當(dāng)屬性名是一個(gè)變量是,只能使用-[];
當(dāng)正則表達(dá)式是一個(gè)變量是,則只能使用RegExp;

4.2 正則表達(dá)式的構(gòu)成

  • 1)界定符
  • 2)原子(構(gòu)成正則表達(dá)式的最基本的單位,必不可少)
  • 3)元字符(修飾原子的)
  • 4)模式修正符
    • I (忽略大小寫(xiě))
    • G(全局匹配)
    • M(多行)
5 原子

5.1 一個(gè)字符

  • 表示一個(gè)字符
    A-Z,a-z,0-9基本的字符,它們只能表示一個(gè)字符
    /a/只能表示 a;
    /abc/只能表示 abc.

5.2 一類字符

  • 表示多個(gè)
    \d表示數(shù)字:一個(gè)數(shù)字,即0-9;
    \D表示:非數(shù)字;
    \s:空格;
    \S:非空格;
    \w:表示"字";
    \W:表示非"字";
6 元字符
元字符.png
  • 作用:修飾它前面的一個(gè)原子,只能修飾一個(gè)原子,并且必須在它的前面

6.1 開(kāi)始&&結(jié)束

    1. ^ 開(kāi)始(表示目標(biāo)字符串應(yīng)該以它后面的原子開(kāi)始)
console.info(/f/.test("asfsd"));//true 
console.info(/^f/.test("asfs"));//false
console.info(/^f/.test("fasfsd"));//true
  • 2)$結(jié)束(表示目標(biāo)字符串應(yīng)該在它后面的原子結(jié)束)
console.info(/af$/.test("fasfsdf"))//false
console.info(/af$/.test("fasfsaf"))//true

6.2 數(shù)量的表示

  • 1)+ 表示前面的 一個(gè)原子要重復(fù)一個(gè)以上
console.info(/f+/.test("abcdeg"));//false
console.info(/f+/.test("abcdeffg"));//true
  • 2)? 表示前面的一個(gè)原子要重復(fù)0次或者一次
console.info(/f+/.test("abcdef"));//false
console.info(/f?/.test("abcdefg"));//true
console.info(/f?/.test("abcdeffg"));//true
  • 3){最大值,最小值}表示前面的一個(gè)原子要重復(fù)[最小值,最大值]次;
console.info(/\d{1,2}/.text("0"));//true
console.info(/\d{1,2}/.text("01"));//true
console.info(/\d{1,2}/.text("012"));//true
  • 4)\d{m}一定要出現(xiàn)的m次
console.info(/\d{3}/.text("0"));//false
console.info(/\d{3}/.text("00"));//false
console.info(/\d{3}/.text("000"));//true
console.info(/\d{3}/.text("0000"));//true
  • 5)\d{m,}前面的原子出現(xiàn)至少m次
console.info(/\d{3,}/.text("00"));//false
console.info(/\d{3}/.text("000"));//true
console.info(/\d{3}/.text("0000"));//true

6.3 轉(zhuǎn)義的表示

    1. :作用改變字符的原來(lái)意思(和邏輯非內(nèi)飾 相反的進(jìn)行取結(jié)果)
    1. \b表示一個(gè)邊界.空格
console.log(/\bis\b/.test("abc is land"));//true

-3) \B表示一個(gè)非邊界

console.log(/is\B/.test("abcisland"));//true

6.4 常見(jiàn)的分組

  • 1)表示分組:把幾個(gè)原子打包成一個(gè)大原子
console.log(/a(bc){2}/.test("abcc"));//false
console.log(/abc{2}/.text("abcc"));//true

6.5 邏輯的關(guān)系
格式:[原子1 原子2 原子3.....];
作用:[]內(nèi)的原子集合中,必須要有一個(gè)

console.log(/1[012]-[0123]\d/.test("10-10));//true
console.log(/1[012]-[0123]\d/.test("101-10));//false
console.log(/1[012]-[0123]\d/.test("111-10));//true
  • 1)[ ]中的原子任何一個(gè)都可以
  • 2)[ ]只能表示一個(gè)原子.
7 案例一
  • 網(wǎng)頁(yè)中的常見(jiàn)的匹配驗(yàn)證
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 正則表達(dá)式 關(guān)于正則表達(dá)式相信很多學(xué)計(jì)算機(jī)的人都聽(tīng)說(shuō)過(guò) 尤其是做編程行業(yè)的人 那什么是正則表達(dá)式 正則表達(dá)式,又稱...
    數(shù)據(jù)革命閱讀 1,002評(píng)論 0 1
  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,628評(píng)論 19 139
  • 什么是正則表達(dá)式呢? 正則表達(dá)式(regular expression)描述了一種字符串匹配的模式,可以用來(lái)檢查一...
    chenxiaoer閱讀 459評(píng)論 0 1
  • 1.正則表達(dá)式介紹 正則表達(dá)式算起來(lái)也是一個(gè)很龐大的語(yǔ)言系統(tǒng),在所有的開(kāi)發(fā)語(yǔ)言中基本都支持正則表達(dá)式,它可以很方便...
    babybus_superdo閱讀 2,674評(píng)論 3 6
  • 原理 正則引擎 為什么正則能有效,因?yàn)橛幸?,這和為什么JS能執(zhí)行一樣,有JS引擎 正則的引擎大致可分為兩類:DF...
    小小小超子閱讀 1,630評(píng)論 0 2

友情鏈接更多精彩內(nèi)容