JavaScript 正則表達(dá)式(實(shí)例)

RegExp對(duì)象

字面量

var reg=/\bis\b/g;定義變量reg然后把正則表達(dá)式文本寫(xiě)到兩個(gè)反斜杠之間绊谭,"\正則文本\"犁跪。\b代表單詞邊界,\bis\b代表正則is單純后面再加個(gè)\b是保證is是一個(gè)完整的單詞,而不是兩個(gè)字符。

var reg=/\bis\b/;
"He is a boy .This is a dog.Where is she?".replace(reg,'IS');
//"He IS a boy .This is a dog.Where is she?"

發(fā)現(xiàn)就匹配了第一個(gè)單純is板甘。
我們使用g,也就是代表全文搜索匹配详炬。var reg=/\bis\b/g;

var reg=/\bis\b/g;
"He is a boy .This is a dog.Where is she?".replace(reg,'IS');
//"He IS a boy .This IS a dog.Where IS she?"

構(gòu)造函數(shù)

var reg=new RegExp("\\bis\\b","g");使用new操作符來(lái)調(diào)用構(gòu)造函數(shù)盐类,構(gòu)造函數(shù)接收兩個(gè)參數(shù),第一個(gè)字符串里面是正則表達(dá)式的文本呛谜,這里有些特殊的地方就是反斜線寫(xiě)了兩次在跳,是因?yàn)镴avascript中反斜線本身就是特殊字符,如果我們想使用的話隐岛,就要進(jìn)行轉(zhuǎn)義猫妙,然后第二個(gè)參數(shù)是字符串,也是標(biāo)志g也就是代表全文搜索匹配

var reg=new RegExp("\\bis\\b","g");
"He is a boy .This is a dog.Where is she?".replace(reg,'IS');
//"He IS a boy .This IS a dog.Where IS she?"

修飾符

g:global全文搜索聚凹,不添加割坠,搜索到第一個(gè)匹配停止

"He is a boy .This is a dog.Where is she?".replace(/\bis\b/g,'IS')
"He IS a boy .This IS a dog.Where IS she?"

i:ignore case 忽略大小寫(xiě),默認(rèn)大小寫(xiě)敏感

"He Is a boy .This is a dog.Where is she?".replace(/\bis\b/gi,'hello')
"He hello a boy .This hello a dog.Where hello she?"

m:multiple lines 多行搜索

var mulSrt = "@123\n@321\n@876"
mulSrt
"@123
@321
@876 "
mulSrt.replace(/@\d/g, "G")
"G23
G21
G76 "
mulSrt.replace(/^@\d/g, "G")
"G23
@321
@876 "
mulSrt.replace(/^@\d/gm, "G")
"G23
G21
G76 "

元字符

正則表達(dá)式由兩種基本字符類型組成:

原義文本字符

原義文本字符意思就是代表它本來(lái)含義的字符比如/a/就是想匹配a

"jj abc a b c vf".replace(/a/gi,'hello')
//"jj hellobc hello b c vf"

寫(xiě)/abc/就是想匹配abc

"jj abc a b c vf".replace(/abc/gi,'hello')
//"jj hello a b c vf"

這些都是原義文本字符妒牙。

元字符

元字符實(shí)在正則表達(dá)式中有特殊含義的非字母字符

比如\b它匹配的是單詞邊界彼哼,他的意思并不是匹配一個(gè)反斜線一個(gè)字母b,意思是匹配一個(gè)單詞邊界湘今。這種就是特殊字符敢朱。

在正則表達(dá)式中有幾個(gè)字符需要注意他們都是有特殊含義的。

Paste_Image.png

字符類

我們工作時(shí)希望并不是匹配某個(gè)字符,而是希望匹配符合一系列特征abc蔫饰。

我們可以使用元字符[]來(lái)構(gòu)建一個(gè)簡(jiǎn)單的類琅豆。
類就是符合某些特征的對(duì)象,是指一個(gè)泛指篓吁,而不是特指某個(gè)字符茫因。
比如我們使用表達(dá)式[abc]就把a(bǔ)或者b或者c自定義成為一類,表達(dá)式就可以匹配這類的字符杖剪。他的意思是有它們一個(gè)就行冻押。

"a1b2c3".replace(/[abc]/g,'x')
//"x1x2x3"

這樣我們發(fā)現(xiàn)abc對(duì)應(yīng)的地方都進(jìn)行替換了,

字符來(lái)取反

使用元字符^創(chuàng)建反向類/負(fù)向類
反向類的意思是不屬于某類的內(nèi)容
表達(dá)式[^abc]表示不是字符a或b或c的內(nèi)容

"a1b2c3".replace(/[^abc]/g,'x')
//"axbxcx"

把字符a或b或c以為外的字符替換成x了

范圍類

正則表達(dá)式提供了范圍類

我們可以使用[a-z]來(lái)鏈接兩個(gè)字符表示從a到z的任意字符
這是一個(gè)閉區(qū)間盛嘿,也就是包含a和z本身

"a1b2c3x4z9".replace(/[a-z]/g,'Q');
//"Q1Q2Q3Q4Q9"

會(huì)發(fā)現(xiàn)a-z字母都被替換

[]組成的類內(nèi)部是可以連寫(xiě)的[a-zA-Z]

"a1b2c3x4z9ASDFGGG".replace(/[a-zA-Z]/g,'Q');
"Q1Q2Q3Q4Q9QQQQQQQ"

匹配所有數(shù)字

"2016-11-12".replace(/[0-9]/g,'Q');
"QQQQ-QQ-QQ"

匹配所有數(shù)字和橫線

"2016-11-12".replace(/[0-9-]/g,'Q');
"QQQQQQQQQQ"

JS預(yù)定義類及邊界

正則表達(dá)式預(yù)定義類:

字符 含義
. 除了回車符和換行符之外的所有字符洛巢,等價(jià)于[^\r\n]
\d 數(shù)字字符,等價(jià)于[0-9] digit
\D 非數(shù)字字符,等價(jià)于[^0-9]
\s 空白符,等價(jià)于[\t\n\x0B\f\r] space
\S 非空白符,等價(jià)于[^\t\b\x0B\f\r]
\w 單詞字符(字母,數(shù)字次兆,下劃線),等價(jià)于[a-zA-Z_0-9] word
\W 非單詞字符,等價(jià)于[^a-zA-Z_0-9]

例子:

匹配一個(gè)ab+數(shù)字+任意字符的字符串

/ab[0-9][^\r\n]/
"ab12334455sss".replace(/ab[0-9][^\r\n]/g,'Q');
//"Q334455sss"

或者

/ab\d.

"ab3klll".replace(/ab\d./g,"z")
//"zlll"

邊界

字符 含義
^ 以xxx開(kāi)始
$ 以xxx結(jié)束
\b 單詞邊界
\B 非單詞邊界

\b單詞邊界

匹配字符

"This is a boy".replace(/is/g,'0')
//"Th0 0 a boy"

會(huì)發(fā)現(xiàn)所以 is都被替換

如果想替換單詞稿茉,單詞前后是有單詞邊界,所以要寫(xiě)上邊界"This is a boy".replace(/\bis\b/g,'0')

"This is a boy".replace(/\bis\b/g,'0')
//"This 0 a boy"

\B非單詞邊界

如果想替換Thisis芥炭,觀察下特征漓库,發(fā)現(xiàn)前面并不是邊界,后面是邊界那就這樣寫(xiě)"This is a boy".replace(/\Bis\b/g,'0')

"This is a boy".replace(/\Bis\b/g,'0')
//"Th0 is a boy"

^以xxx為開(kāi)始

"@123@abc@".replace(/@./g,'Q');
//"Q23Qbc@"

匹配全局@和任意字符

"@123@abc@".replace(/^@./g,'Q');
//"Q23@abc@"

以@和任意字符作為開(kāi)始后面的不匹配

$以xxx為結(jié)束

"@123@abc@".replace(/.@/g,'Q');
//"@12QabQ"

匹配全局任意字符和@

"@123@abc@".replace(/.@$/g,'Q');
//"@123@abQ"

匹配最后一個(gè)任意字符和@

var mulSrt = "@123\n@321\n@876"
mulSrt
"@123
@321
@876 "
mulSrt.replace(/@\d/g, "G")
"G23
G21
G76 "
mulSrt.replace(/^@\d/g, "G")
"G23
@321
@876 "
mulSrt.replace(/^@\d/gm, "G")
"G23
G21
G76 "

量詞

字符 含義
园蝠? 出現(xiàn)零次或一次(最多出現(xiàn)一次)
+ 出現(xiàn)一次或多次(至少出現(xiàn)一次)
* 出現(xiàn)零次或多次(任意次)
{n} 出現(xiàn)n次
{n,m} 出現(xiàn)n到m次
{n,} 至少出現(xiàn)n次

我們希望匹配一個(gè)連續(xù)出現(xiàn)20次數(shù)字的字符串

/\d\d\d\d\d\d\d\d..../反斜杠加d表示數(shù)字表示數(shù)字出現(xiàn)20次把他寫(xiě)20遍這樣非常麻煩如果出現(xiàn)100次那就要寫(xiě)100遍嗎渺蒿。為了解決這個(gè)問(wèn)題正則表達(dá)式引入了量詞的概念。

"12341111133333333111111111111".replace(/\d{20}/g,"d")
//"d111111111"

匹配數(shù)字兩次

"1234".replace(/\d{2}/g,"d")
//"dd"

JS正則貪婪模式與非貪婪模式

貪婪模式

了解了量詞我們看這樣一個(gè)場(chǎng)景彪薛。

/\d{3,6}/

數(shù)字匹配3到6次茂装,我們用12345678來(lái)執(zhí)行,我們寫(xiě)的正則表達(dá)式是匹配數(shù)字3到6次善延,這個(gè)字符串中少态,即可以滿足3次4次5次6次,都是可以滿足的易遣,那么正則表達(dá)式這時(shí)候該怎么處理彼妻?

正則表達(dá)式在處理的時(shí)候會(huì)盡可能多的匹配,直到匹配失敗训挡。

"12345678".replace(/\d{3,6}/g,'A')
//"A78"

我們看到澳骤,他是匹配123456,78沒(méi)有匹配到澜薄,也就是說(shuō)他是盡可能多的匹配而不是少的匹配为肮。

這就是貪婪模式

非貪婪模式

讓正則表達(dá)式盡可能少的匹配,也就是說(shuō)一旦匹配成功匹配不再繼續(xù)嘗試肤京,就是非貪婪模式颊艳。

做法很簡(jiǎn)單茅特,在量詞后面加上?即可。

"12345678".replace(/\d{3,6}?/g,'A')
"AA78"

這個(gè)時(shí)候的執(zhí)行結(jié)果就是123棋枕,456后面兩個(gè)78沒(méi)有被匹配到白修。

分組

匹配字符串Byron連續(xù)出現(xiàn)3次的場(chǎng)景。

沒(méi)有接觸量詞的時(shí)候我們把這個(gè)單詞寫(xiě)3遍重斑,接觸量詞之后我們可能會(huì)這樣寫(xiě)Byron{3}但是它代表的含義和我們預(yù)期的并不是一致的兵睛。實(shí)際上是n重復(fù)3次,前面不重復(fù)窥浪,量詞是作為緊挨著它的字符祖很,并不是整個(gè)單詞,否則怎么知道你匹配到哪漾脂。

"ByronByronByron".replace(/Byron{3}/g,'A')
//"ByronByronByron"
"ByronnnByronByron".replace(/Byron{3}/g,'A')
//"AByronByron"

那么如何讓他匹配整個(gè)單詞呢假颇?或者是我們?nèi)Χǖ膬?nèi)容,那么就用到分組

使用()可以達(dá)到分組功能骨稿,使量詞作用于分組笨鸡。

(Byron){3}這樣寫(xiě)就能達(dá)到我們預(yù)期效果。整個(gè)單詞重復(fù)了3遍坦冠。

比如想匹配一個(gè)小寫(xiě)字母加一個(gè)數(shù)字連續(xù)出現(xiàn)3次a1b2c3d4

`a1b2c3d4`.replace(/[a-z]\d{3}/g,"A")
//"a1b2c3d4"

這樣寫(xiě)是匹配不到的形耗,因?yàn)?code>\d{3}是找數(shù)字出現(xiàn)3次的場(chǎng)景。

我們將他分組即可

`a1b2c3d4`.replace(/([a-z]\d){3}/g,"A")
//"Ad4"

這樣就達(dá)到效果了蓝牲。這樣量詞作用于整個(gè)分組趟脂。

使用|可以達(dá)到或的效果

"ByronCasper".replace(/Byron|Casper/g,"A");
//"AA"

這樣兩個(gè)都被匹配到了泰讽。

分組在或中的使用

"ByronsperByrCasper".replace(/Byr(on|Ca)sper/g,"A");
//"AA"

反向引用

比如我們想把2016-11-25變成11/25/2016

如果只是想把-替換成/是很簡(jiǎn)單的

"2016-11-25".replace(/-/g,'/')
//"2016/11/25"

但是它順序也變了例衍,

以往的寫(xiě)法

"2016-11-25".replace(/\d{4}-\d{2}-\d{2}/g,'11/25/2016')
//"11/25/2016"

但是需要匹配的值變成了2016,月份可能變成11已卸,我們想替換他本身佛玄,替換的內(nèi)容不再是一個(gè)常量,而是一個(gè)變量累澡。這個(gè)時(shí)候該怎么處理梦抢?

我們用反向引用,

"2016-11-25".replace(/(\d{4})-(\d{2})-(\d{2})/g,'$2/$3/$3')
"11/25/25"

我們用$引用分組內(nèi)內(nèi)容愧哟,我們對(duì)分組內(nèi)容進(jìn)行捕獲奥吩,捕獲后用$1$2$3來(lái)代替。

"2016-11-25".replace(/(\d{4})-(\d{2})-(\d{2})/g,'$1')
//"2016"
 "2016-11-25".replace(/(\d{4})-(\d{2})-(\d{2})/g,'$2')
//"11"
 "2016-11-25".replace(/(\d{4})-(\d{2})-(\d{2})/g,'$3')
//"25"

"2016-11-25".replace(/(\d{4})-(\d{2})-(\d{2})/g,'$2/$3/$3')
"11/25/25"

忽略分組

不希望捕獲某些分組蕊梧,只需要在分組內(nèi)加上?:就可以霞赫。

"abcaok".replace(/(abc).(ok)/g,'$1/$2')
//"abc/ok"

"abcaok".replace(/(?:abc).(ok)/g,'$1/$2')
//"ok/$2"

前瞻

正則表達(dá)式的前瞻:

  1. 正則表達(dá)式從文本頭部向尾部開(kāi)始解析,文本尾部方向肥矢,成為“前”
  2. 前瞻 就是在正則表達(dá)式匹配到規(guī)則的時(shí)候端衰,向前檢查是否符合斷言。比如找到兒子為張三,還得看看他的父親是否是李四
    后顧/后瞻方向相反

注意:JavaScript不支持后顧

匹配單詞數(shù)字加數(shù)字

"a2*3".replace(/\w(\d)/g,"A");
//"A*3"

匹配單詞數(shù)字旅东,注:這個(gè)單詞數(shù)字后面必須有數(shù)字才會(huì)匹配灭抑,(?=\d)不能算在匹配內(nèi)容,這是斷言抵代。

"a2*3".replace(/\w(?=\d)/g,"A");
//"A2*3"

寫(xiě)個(gè)復(fù)雜點(diǎn)的案例

"a2*34v8".replace(/\w(?=\d)/g,"A");
//"A2*A4A8"

a2*34``v8這三個(gè)符合要求

"a2*34vv".replace(/\w(?=\d)/g,"A");
//"A2*A4vv"

a2*34vv腾节,這里只有兩個(gè)匹配vvv是對(duì)的但是它后面不是數(shù)字,所以不成功荤牍。

現(xiàn)在改一下比配后面不是數(shù)字的

"a2*34vv".replace(/\w(?!\d)/g,"A");
"aA*3AAA"

a2*``34``vv,2變成A禀倔。4vv都符合所以是AAA

js對(duì)象屬性

描述 默認(rèn)
g:global是否全文搜索 默認(rèn)false
i:ignore case是否大小寫(xiě)敏感 默認(rèn)false
m:multiline多行搜索 默認(rèn)值false
lastIndex:當(dāng)前正則表達(dá)式匹配內(nèi)容的最后一個(gè)字符的下一個(gè)位置(即下一次匹配開(kāi)始的位置)。
source : 正則表達(dá)式的文本字符串参淫。

test 和 exec方法

正則表達(dá)式本身的兩個(gè)方法
1.test
RegExp.prototype.test(str)

用于測(cè)試字符串參數(shù)中是否存在匹配正則表達(dá)式模式的字符串

如果存在則返回true救湖,否則返回false

lastIndex 記錄當(dāng)前匹配結(jié)果的、最后一個(gè)字符的涎才、下一個(gè)字符的位置
注意:test()方法在匹配的時(shí)候當(dāng)匹配到一個(gè)結(jié)果時(shí)鞋既,會(huì)從lastIndex位置開(kāi)始匹配下一個(gè)結(jié)果,直到不存在的時(shí)候才置為0耍铜。因此邑闺,當(dāng)使用全局g屬性標(biāo)識(shí)時(shí),當(dāng)匹配到最后一個(gè)結(jié)果時(shí)棕兼,lastIndex值指向不存在的位置陡舅,此時(shí)再執(zhí)行test()會(huì)返回false。
例子:多次執(zhí)行test()方法伴挚,會(huì)在true靶衍、false之間循環(huán)
(/\w/g).test('a')每次執(zhí)行都是正確的,但是通過(guò)實(shí)例化對(duì)象茎芋,需要很大的開(kāi)銷
test()方法:原意就是測(cè)試有沒(méi)有颅眶、能不能匹配上,當(dāng)使用test原意時(shí)田弥,沒(méi)必要加g

2.exec

RegExp.prototype.exec(str)
使用正則表達(dá)式模式對(duì)字符串執(zhí)行搜索涛酗,并將更新全局RegExp對(duì)象的屬性一反映匹配結(jié)果
如果沒(méi)有匹配的文本則返回 null,否則返回一個(gè)結(jié)果數(shù)組:

  • index 聲明匹配文本的第一個(gè)字符位置
  • input 存放被檢索的字符串 string

非全局調(diào)用
調(diào)用非全局的RegExp對(duì)象的 exec()時(shí)偷厦,返回?cái)?shù)組
第一個(gè)元素是與正則表達(dá)式相匹配的文本
第二個(gè)元素是與RegExpObject的第一個(gè)子表達(dá)式相匹配的文本(如果有的話)
第三個(gè)元素是與RegExp對(duì)象的第二個(gè)子表達(dá)式相匹配的文本(如果有的話)商叹,以此類推

字符串對(duì)象方法

String.prototype.search(reg)

search() 方法用于檢索字符串中指定的子字符串,或檢索與正則表達(dá)式相匹配的子字符串只泼。

語(yǔ)法

stringObject.search(regexp)
參數(shù) 描述
regexp 該參數(shù)可以是需要在 stringObject 中檢索的子串剖笙,也可以是需要檢索的 RegExp 對(duì)象。注釋:要執(zhí)行忽略大小寫(xiě)的檢索辜妓,請(qǐng)追加標(biāo)志 i枯途。

返回值

stringObject 中第一個(gè)與 regexp 相匹配的子串的起始位置忌怎。

注釋:如果沒(méi)有找到任何匹配的子串,則返回 -1酪夷。

說(shuō)明

search() 方法不執(zhí)行全局匹配榴啸,它將忽略標(biāo)志 g。它同時(shí)忽略 regexp 的 lastIndex 屬性晚岭,并且總是從字符串的開(kāi)始進(jìn)行檢索鸥印,這意味著它總是返回 stringObject 的第一個(gè)匹配的位置。

"a1b1c1d1".search('1')
//1
"a1b1c1d1".search('10')
//-1
"a1b1c1d1".search(1)
//1
"a1b1c1d1".search(/1/)
//1

String.prototype.match(reg)

match() 方法可在字符串內(nèi)檢索指定的值坦报,或找到一個(gè)或多個(gè)正則表達(dá)式的匹配库说。

該方法類似 indexOf() 和 lastIndexOf(),但是它返回指定的值片择,而不是字符串的位置潜的。

參數(shù) 描述
searchvalue 必需。規(guī)定要檢索的字符串值字管。
regexp 必需啰挪。規(guī)定要匹配的模式的 RegExp 對(duì)象。如果該參數(shù)不是 RegExp 對(duì)象嘲叔,則需要首先把它傳遞給 RegExp 構(gòu)造函數(shù)亡呵,將其轉(zhuǎn)換為 RegExp 對(duì)象。

返回值

存放匹配結(jié)果的數(shù)組硫戈。該數(shù)組的內(nèi)容依賴于 regexp 是否具有全局標(biāo)志 g锰什。

說(shuō)明

match() 方法將檢索字符串 stringObject,以找到一個(gè)或多個(gè)與 regexp 匹配的文本丁逝。這個(gè)方法的行為在很大程度上有賴于 regexp 是否具有標(biāo)志 g汁胆。

如果 regexp 沒(méi)有標(biāo)志 g,那么 match() 方法就只能在 stringObject
中執(zhí)行一次匹配果港。如果沒(méi)有找到任何匹配的文本沦泌, match() 將返回
null糊昙。否則辛掠,它將返回一個(gè)數(shù)組,其中存放了與它找到的匹配文本有關(guān)的信息释牺。該數(shù)組的第 0
個(gè)元素存放的是匹配文本萝衩,而其余的元素存放的是與正則表達(dá)式的子表達(dá)式匹配的文本。除了這些常規(guī)的數(shù)組元素之外没咙,返回的數(shù)組還含有兩個(gè)對(duì)象屬性猩谊。index
屬性聲明的是匹配文本的起始字符在 stringObject 中的位置,input 屬性聲明的是對(duì) stringObject 的引用祭刚。

如果 regexp 具有標(biāo)志 g牌捷,則 match() 方法將執(zhí)行全局檢索墙牌,找到 stringObject
中的所有匹配子字符串。若沒(méi)有找到任何匹配的子串暗甥,則返回
null喜滨。如果找到了一個(gè)或多個(gè)匹配子串,則返回一個(gè)數(shù)組撤防。不過(guò)全局匹配返回的數(shù)組的內(nèi)容與前者大不相同虽风,它的數(shù)組元素中存放的是
stringObject 中所有的匹配子串,而且也沒(méi)有 index 屬性或 input 屬性寄月。

注意:在全局檢索模式下辜膝,match() 即不提供與子表達(dá)式匹配的文本的信息,也不聲明每個(gè)匹配子串的位置漾肮。如果您需要這些全局檢索的信息厂抖,可以使用 RegExp.exec()。

var str="Hello world!"
document.write(str.match("world") + "<br />")
document.write(str.match("World") + "<br />")
document.write(str.match("worlld") + "<br />")
document.write(str.match("world!"))

輸出

world
null
null
world! 

正則方法非全局匹配

var reg3 = /\d(\w)/;
var reg4 = /\d(\w)/g;
var ts = '$1a2b3c4d5e';

var ret = ts.match(reg3);
console.log(ret);    //["1a", "a", index: 1, input: "$1a2b3c4d5e"]
document.write(ret);  //1a,a

正則方法全局匹配

var reg3 = /\d(\w)/;
var reg4 = /\d(\w)/g;
var ts = '$1a2b3c4d5e';

var ret = ts.match(reg4);
console.log(ret);   //["1a", "2b", "3c", "4d", "5e"]
document.write(ret);//1a,2b,3c,4d,5e

String.prototype.match(reg)方法

split() 方法用于把一個(gè)字符串分割成字符串?dāng)?shù)組克懊。

基本用法

var op = 'a,b,c,d';
var spo = op.split(',');
console.log(spo);
//["a", "b", "c", "d"]

在一些復(fù)雜分割情況下可以用正則用法

var op = 'a1b2c3d';
var spo = op.split(/\d/);
console.log(spo);
//["a", "b", "c", "d"]

再?gòu)?fù)雜

var op = 'a,b|c?d';
var spo = op.split(/[,|\|\?]/g);
console.log(spo);
//["a", "b", "c", "d"]

String.prototype.replace方法

傳入兩個(gè)參數(shù)replace(找誰(shuí)验游,替換誰(shuí))

"a1b".replace(/1/,2)
//"a2b"


"a1b1c1".replace(/1/g,2)
//"a2b2c2"

"a1b1c1".replace(/\d/g,2)
"a2b2c2"

如果我想把"a1b2c3d4" => "a2b3c4d5"該怎么實(shí)現(xiàn)呢?

var h = "a1b2c3d4".replace(/\d/g, function(match, index, origin) {
    //console.log(index);
    return parseInt(match) + 1;
});
console.log(h);//a2b3c4d5



var h = "a1b2c3d4e5".replace(/(\d)(\w)(\d)/g, function(match, g1, g2, g3, index, origin) {
    //console.log(index);
    return g1 + g3;
});
console.log(h);//a12c34e5
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末保檐,一起剝皮案震驚了整個(gè)濱河市耕蝉,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌夜只,老刑警劉巖垒在,帶你破解...
    沈念sama閱讀 206,968評(píng)論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異扔亥,居然都是意外死亡场躯,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén)旅挤,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)踢关,“玉大人,你說(shuō)我怎么就攤上這事粘茄∏┪瑁” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 153,220評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵柒瓣,是天一觀的道長(zhǎng)儒搭。 經(jīng)常有香客問(wèn)我,道長(zhǎng)芙贫,這世上最難降的妖魔是什么搂鲫? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,416評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮磺平,結(jié)果婚禮上魂仍,老公的妹妹穿的比我還像新娘拐辽。我一直安慰自己,他們只是感情好擦酌,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,425評(píng)論 5 374
  • 文/花漫 我一把揭開(kāi)白布薛训。 她就那樣靜靜地躺著,像睡著了一般仑氛。 火紅的嫁衣襯著肌膚如雪乙埃。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,144評(píng)論 1 285
  • 那天锯岖,我揣著相機(jī)與錄音介袜,去河邊找鬼。 笑死出吹,一個(gè)胖子當(dāng)著我的面吹牛遇伞,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播捶牢,決...
    沈念sama閱讀 38,432評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼鸠珠,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了秋麸?” 一聲冷哼從身側(cè)響起渐排,我...
    開(kāi)封第一講書(shū)人閱讀 37,088評(píng)論 0 261
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎灸蟆,沒(méi)想到半個(gè)月后驯耻,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,586評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡炒考,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,028評(píng)論 2 325
  • 正文 我和宋清朗相戀三年可缚,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片斋枢。...
    茶點(diǎn)故事閱讀 38,137評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡帘靡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出瓤帚,到底是詐尸還是另有隱情描姚,我是刑警寧澤,帶...
    沈念sama閱讀 33,783評(píng)論 4 324
  • 正文 年R本政府宣布缘滥,位于F島的核電站轰胁,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏朝扼。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,343評(píng)論 3 307
  • 文/蒙蒙 一霎肯、第九天 我趴在偏房一處隱蔽的房頂上張望擎颖。 院中可真熱鬧榛斯,春花似錦、人聲如沸搂捧。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,333評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)允跑。三九已至王凑,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間聋丝,已是汗流浹背索烹。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,559評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留弱睦,地道東北人百姓。 一個(gè)月前我還...
    沈念sama閱讀 45,595評(píng)論 2 355
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像况木,于是被迫代替她去往敵國(guó)和親垒拢。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,901評(píng)論 2 345

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