正則

正則

1.什么是正則:用來(lái)操作字符串的規(guī)則;

正則就是用來(lái)操作(校驗(yàn)跌穗,捕獲)“字符串”的

1)校驗(yàn):返回布爾值 true:符合規(guī)則 false:不合格订晌;

2)捕獲:把符合規(guī)則內(nèi)容拎出來(lái);

正則表達(dá)式:元字符 修飾符

var re=/\d+/g;

兩個(gè)斜杠之間的都是元字符;

斜杠外面的是修飾符蚌吸;

3.元字符包含:代表特殊含義的元字符+代表次數(shù)的量詞元字符

1)代表特殊含義的元字符

\轉(zhuǎn)義

|或

()小分組

. 除了\n以外的其他字符

\n 換行

\b 開(kāi)頭結(jié)尾和空格 匹配一個(gè)邊界

^開(kāi)頭

$結(jié)尾

\s 空格锈拨; \S 非空格

\d 數(shù)字; \D 非數(shù)子

\w 數(shù)字字母下劃線羹唠; \W 非數(shù)字字母下劃線

x|y匹配x或者y中的任意一個(gè)

[a-z]字母 匹配a-z種的任意字符

[^a-z] 非字母

[abc]abc三者中的任何一個(gè)奕枢;

[^abc]除了abc三者中的任何一個(gè)娄昆;

2)代表次數(shù)的量詞元字符

* 0到多

+ 1次或者多次

? 0||1次 ?0次或1次

{n} 正好n次

{n,} n到多

{n,m} n次到m次

4.修飾符缝彬;

g 全局 ? ? ? (global)

i 忽略大小寫(xiě) (ignoreCase)

m 換行 ? ? ? (mulitiline)

分組【】 ()

5.什么時(shí)候加開(kāi)頭和結(jié)尾:

如果從一段字符串中萌焰,查找是否包含某個(gè)小字符-不要加開(kāi)頭和結(jié)尾

嚴(yán)格匹配,必須加開(kāi)頭和結(jié)尾谷浅;

6.中括號(hào)[]的用法:

1)中括號(hào)中放的類似于+,.等特殊符號(hào)都沒(méi)有特殊含義扒俯;

2)中括號(hào)中不會(huì)出現(xiàn)兩位數(shù)

7:()分組的作用:

- ?可以改變正則處理時(shí)候的優(yōu)先級(jí)

- ?分組捕獲:分組其實(shí)可以理解為大正則中分出一個(gè)小正則,在正則捕獲的時(shí)候壳贪,我們不僅僅可以把大正則匹配的結(jié)果捕獲到陵珍,也可以把小分組匹配的結(jié)果捕獲到

- ?分組引用:出現(xiàn)和前面分組一模一樣的結(jié)果

- ? \1 出現(xiàn)第一個(gè)和分組一模一樣的內(nèi)容,但是保證當(dāng)前引用的分組违施,能夠捕獲到(不能加互纯?: ?= 磕蒲?A袅省)

8.當(dāng)/^$/中遇到|的時(shí)候;最好用()提高優(yōu)先級(jí)辣往; reg=/^(18|19)$/;

教驗(yàn)

教驗(yàn)

1兔院;test()校驗(yàn),因?yàn)樗祷氐氖遣紶栔嫡鞠鳎砸话阌糜趇f條件判斷種坊萝,驗(yàn)證某一個(gè)字符串是否符合某一規(guī)則

2;exec:用來(lái)正則捕獲的许起,可以返回一個(gè)數(shù)組十偶,在沒(méi)有小分組的情況下,數(shù)組有三項(xiàng):

1)符合大正則的內(nèi)容园细,捕獲的內(nèi)容

2)index:index捕獲開(kāi)始的索引

3)input:input是原始數(shù)組

3.正則捕獲量大特性:exec

1)懶惰型:每調(diào)用一次惦积,exec,lastIndex永遠(yuǎn)都是從0的位置開(kāi)始查找

- 執(zhí)行一次exec只能捕獲一次猛频,為了解決他的懶惰性狮崩,我們可以添加全局g就能解決了

- lastIndex 正則捕獲的起始位置

- 第一次捕獲的時(shí)候,值為0鹿寻,在正則不做任何處理的情況下睦柴,我們下次捕獲的時(shí)候,這個(gè)值依然是0毡熏,所以會(huì)重復(fù)捕獲第一個(gè)內(nèi)容

- 解決措施:添加全局g

2) 貪婪性:如果用了加號(hào)爱只,永遠(yuǎn)拿到的是最長(zhǎng)的值,

解決措施在+招刹? 這樣每次只能拿到一個(gè)值

4. exec和match的區(qū)別:

- macth必須要加上g恬试,否則只捕獲第一個(gè)

- match只能捕獲到所有符合大正則的內(nèi)容,無(wú)法拿到小分組的信息疯暑;

- 在正則沒(méi)有全局g的情況下训柴,exec和match都只會(huì)捕獲1次;都能拿到小分組的信息妇拯;

- 有全局g的情況下幻馁,exec仍然能拿到小分組信息,

5. reg.replace()兩個(gè)參數(shù)越锈,參1仗嗦;字符串/正則 ? 參2;字符串 匿名函數(shù)

- 在這個(gè)匿名函數(shù)種甘凭,接受的參數(shù)稀拐,跟exec拿到的值一模一樣

- ?匿名函數(shù)被調(diào)用的次數(shù),取決于前面正則匹配成功的次數(shù)

- ?匿名函數(shù)中的argument[0],argument[1],第一個(gè)是獲取到的大正則 第二個(gè)參數(shù)是小分組

- 在函數(shù)中丹弱,你返回的是什么德撬,就相當(dāng)于把reg正則里面的內(nèi)容替換成了什么,不寫(xiě)return 默認(rèn)返回undefined

6. macth 字符串的方法躲胳,捕獲到正則匹配的結(jié)果蜓洪,只要加了分組,捕獲的時(shí)候坯苹,不僅把大正則捕獲到隆檀,而且里面的每一個(gè)小分組,匹配的時(shí)候粹湃,也可以捕獲到恐仑,如果其中某一個(gè)分組,不需要捕獲再芋,我們可以在分組的前面加上菊霜?: 只匹配不捕獲

7; 1)济赎?可有可無(wú)鉴逞;

2)(?司训;)只匹配不捕獲

3)+构捡?解決正則的貪婪性 ?放在一個(gè)量詞元字符后面,代表取消正則捕獲時(shí)候的貪婪性

4)?=正向預(yù)查 ? ? ? ? ? ? ? ? ? ? ? ? ? 匹配不捕獲

5)?!負(fù)向預(yù)查 不需要那個(gè) (壳猜?勾徽!3)不能出現(xiàn)3 匹配不捕獲

6) ? 0||1次 ?0次或1次 在普通的元字符后面统扳,代表出現(xiàn)0-1次

8喘帚;()用法畅姊;

1)在正則中,有/^(18|19)$/,加()提高優(yōu)先級(jí)

2)分組的作用

3)只匹配不捕獲

4)從左往右數(shù)( ?從他開(kāi)始數(shù)小分組

9;誰(shuí)能影響lastIndex 的值

test+g

exec+g

以上兩個(gè)都必須配合g吹由,才能實(shí)現(xiàn)lastIndex值的增加若未;

正則例子

1)手機(jī)號(hào)正則 ? ? /^1\d{10}$/

2)有效數(shù)字正則 ? ?/^[+-]?(\d|([1-9]\d+))(\.\d+)?$/

3)驗(yàn)證年齡 18-65 ?/^((18|19)|([2-5]\d)|(6[0-5]))$/;

4)驗(yàn)證郵箱的正則 ? /^([\w.-]+)@([0-9a-zA-Z]+)(\.[a-zA-Z]{2,4}){1,2}$/

5)中文名字 ?/^[\u4e00-\u9fa5]{2,4}$/

6)身份證號(hào)

var reg = /^\d{17}(\d|X)$/;

var reg = /^(\d{2})(\d{4})(\d{4})(\d{2})(\d{2})(\d{2})(\d)(\d|X)$/;

7)非空驗(yàn)證 !/^\s*$/

8)去除首尾空格 /(^ +)|( +$)/g

9)偷小說(shuō) /<[^<>]>/g; 注意:textarea 千萬(wàn)不要通過(guò)innerHTML取值,因?yàn)槟隳貌坏角泠辏荒芡ㄟ^(guò)value才能內(nèi)容粗合; var reg=/<[^<>]+>/g

10)去除收尾空格

var reg=/(^ +)|( +$)/g;

var reg=/(^ +| +$)/g;

var reg=/(^\s+|\s+$)/g;

//去除字符串中所有的空格;

var reg=/\s+/g;

11)var reg=/^([a-z])$/

12)百度昵稱英文14位乌昔,漢字七個(gè)

function chekNick(nick) {

var reg1=/^[\u4e00-\u9fa5]$/ //檢測(cè)是否為中文

var reg2=/^\w$/; ? ? ? ? ? ?//檢測(cè)是否為 數(shù)字 字母 下劃線

var len=0;

for (var i=0;i

var cur=nick[i];

if (reg1.test(cur)){

len+=2

}else if(reg2.test(cur)) {

len++;

}else {

len=0;

break;

}

}

if (len==0||len>14){

return false;

}

return true;

}

13)密碼 數(shù)字或字母組合在一起的(6-10)位

var reg=/^(?![0-9]+$)(?![a-zA-Z]+$)[a-zA-Z0-9]{6,10}$/

14) ?出現(xiàn)一個(gè)數(shù)字隙疚,但是不能是3,然后這個(gè)機(jī)制可以出現(xiàn)多次

var reg=/^((?!3)\d)+$/;

myExecAll

RegExp.prototype.myExecAll=function () {

var str=arguments[0]||'';//如果第一個(gè)參數(shù)值沒(méi)有傳遞的話磕道,我們默認(rèn)為空字符串

//正則加g才能捕獲全部供屉,沒(méi)有加的話,我們只讓其捕獲第一個(gè)即可 this是reg g=global

if (!this.global){

return this.exec(str)

}

var ary=[]

var resZs=this.exec(str)

while (resZs){

ary.push(resZs[0])

resZs=this.exec(str)

}

return ary.length===0?null:ary

}

reg.myExecAll(str)

myMatch

String.prototype.myMatch=function(reg){

//this:字符串實(shí)例

var res=reg.exec(this);

var ary=[];

while(res){

ary.push(res[0]);

res=reg.exec(this);

}

return ary;

}

var ary=str.myMatch(reg);

console.log(ary);

回調(diào)函數(shù)

11.回調(diào)函數(shù)注意4點(diǎn):

1)什么時(shí)候被調(diào)用捅厂?調(diào)用次數(shù)贯卦?

2)是否傳參

3)是否改變this指向

4)是否有返回值;

//ForEach在瀏覽器下不兼容焙贷,我們寫(xiě)這個(gè)方法讓他在瀏覽器下兼容

var ary=[12,14,19,33,22]

var obj={}

Array.prototype.myForEach=function (cb,context) {

//context代表的是this

context=context||window

//瀏覽器兼容撵割,就直接使用瀏覽器兼容的方法

if ('forEach'in Array.prototype){

this.forEach(cb,context);

return;//阻斷代碼

}

//當(dāng)瀏覽器不支持的時(shí)候,自己寫(xiě)兼容方法

for(var i=0;i

cb.call(context,this[i],i,this)

//改變this指向

}

}

//調(diào)用封裝的myForEach這個(gè)方法

var res=ary.myForEach(function (item,index,input) {

console.log(item,index,input)

})

console.log(res)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末辙芍,一起剝皮案震驚了整個(gè)濱河市啡彬,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌故硅,老刑警劉巖庶灿,帶你破解...
    沈念sama閱讀 218,941評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異吃衅,居然都是意外死亡往踢,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,397評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)徘层,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)峻呕,“玉大人,你說(shuō)我怎么就攤上這事趣效∈莅” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,345評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵跷敬,是天一觀的道長(zhǎng)讯私。 經(jīng)常有香客問(wèn)我,道長(zhǎng),這世上最難降的妖魔是什么斤寇? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,851評(píng)論 1 295
  • 正文 為了忘掉前任桶癣,我火速辦了婚禮,結(jié)果婚禮上抡驼,老公的妹妹穿的比我還像新娘鬼廓。我一直安慰自己,他們只是感情好致盟,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,868評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著尤慰,像睡著了一般馏锡。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上伟端,一...
    開(kāi)封第一講書(shū)人閱讀 51,688評(píng)論 1 305
  • 那天杯道,我揣著相機(jī)與錄音,去河邊找鬼责蝠。 笑死党巾,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的霜医。 我是一名探鬼主播齿拂,決...
    沈念sama閱讀 40,414評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼抹缕,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼痕钢!你這毒婦竟也來(lái)了兴垦?” 一聲冷哼從身側(cè)響起策彤,我...
    開(kāi)封第一講書(shū)人閱讀 39,319評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤疲憋,失蹤者是張志新(化名)和其女友劉穎白热,沒(méi)想到半個(gè)月后阳似,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體权她,經(jīng)...
    沈念sama閱讀 45,775評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡镀梭,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,945評(píng)論 3 336
  • 正文 我和宋清朗相戀三年刀森,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片报账。...
    茶點(diǎn)故事閱讀 40,096評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡研底,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出笙什,到底是詐尸還是另有隱情飘哨,我是刑警寧澤,帶...
    沈念sama閱讀 35,789評(píng)論 5 346
  • 正文 年R本政府宣布琐凭,位于F島的核電站芽隆,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜胚吁,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,437評(píng)論 3 331
  • 文/蒙蒙 一牙躺、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧腕扶,春花似錦孽拷、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,993評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至窿侈,卻和暖如春炼幔,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背史简。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,107評(píng)論 1 271
  • 我被黑心中介騙來(lái)泰國(guó)打工乃秀, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人圆兵。 一個(gè)月前我還...
    沈念sama閱讀 48,308評(píng)論 3 372
  • 正文 我出身青樓跺讯,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親殉农。 傳聞我的和親對(duì)象是個(gè)殘疾皇子刀脏,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,037評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • --------------------------正則的作用--------------------------...
    G_whk閱讀 622評(píng)論 1 5
  • 初衷:看了很多視頻、文章统抬,最后卻通通忘記了火本,別人的知識(shí)依舊是別人的,自己卻什么都沒(méi)獲得聪建。此系列文章旨在加深自己的印...
    DCbryant閱讀 4,014評(píng)論 0 20
  • 一钙畔、正則初體驗(yàn) 在軟件開(kāi)發(fā)中,不管是Java金麸、C#擎析、JS、OC....基本上都會(huì)接觸到正則挥下,不過(guò)大多數(shù)人都對(duì)正則并...
    iceman_dev閱讀 2,661評(píng)論 9 28
  • //正則:就是以個(gè)規(guī)則 用來(lái)處理字符串的一個(gè)規(guī)則 var reg =/\d/; reg.exec("1"); //...
    Kyle_kk閱讀 702評(píng)論 0 1
  • 定義:用來(lái)處理字符串的規(guī)則 1揍魂、匹配:判斷一個(gè)字符串是否符合我們制定的規(guī)則->test:reg.test(str)...
    RomainLiu閱讀 645評(píng)論 0 0