正則表達(dá)式

正則表達(dá)式

簡(jiǎn)介

? ? 正則表達(dá)式,又稱(chēng)規(guī)則表達(dá)式,(Regular Expression趴俘,在代碼中常簡(jiǎn)寫(xiě)為regex寥闪、regexp或RE)磨淌,是一種文本模式,包括普通字符(例如缚柳,a 到 z 之間的字母)和特殊字符(稱(chēng)為"元字符")秋忙,是計(jì)算機(jī)科學(xué)的一個(gè)概念灰追。正則表達(dá)式使用單個(gè)字符串來(lái)描述狗超、匹配一系列匹配某個(gè)句法規(guī)則的字符串努咐,通常被用來(lái)檢索、替換那些符合某個(gè)模式(規(guī)則)的文本佩迟。廣泛運(yùn)用于Scala 、PHP报强、C# 躺涝、Java坚嗜、C++ 诗充、Objective-c、Perl 碟绑、Swift格仲、VBScript 诵冒、Javascript、Ruby 以及Python等等侮东。正則表達(dá)式通城难牛縮寫(xiě)成“regex”铁蹈,單數(shù)有regexp握牧、regex,復(fù)數(shù)有regexps放案、regexes矫俺、regexen。

?目的

? ? 給定一個(gè)正則表達(dá)式和另一個(gè)字符串友雳,我們可以達(dá)到如下的目的:

? ? 1. 判斷給定的字符串是否符合正則表達(dá)式的過(guò)濾邏輯(稱(chēng)作“匹配”):

? ? 2. 可以通過(guò)正則表達(dá)式押赊,從字符串中獲取我們想要的特定部分流礁。

?特點(diǎn)

? ? 1. 靈活性、邏輯性和功能性非常強(qiáng);

? ? 2. 可以迅速地用極簡(jiǎn)單的方式達(dá)到字符串的復(fù)雜控制耀石。

? ? 3. 對(duì)于剛接觸的人來(lái)說(shuō),比較晦澀難懂。

? ? 4. 由于正則表達(dá)式主要應(yīng)用對(duì)象是文本,因此它在各種文本編輯器場(chǎng)合都有應(yīng)用蔽挠,小到著名編輯器EditPlus澳淑,大到Microsoft Word杠巡、Visual Studio等大型編輯器雇寇,都可以使用正則表達(dá)式來(lái)處理文本內(nèi)容

符號(hào)

? ? 正則表達(dá)式由一些普通字符和一些元字符(metacharacters)組成。普通字符包括大小寫(xiě)的字母和數(shù)字嫩海,而元字符則具有特殊的含義

?語(yǔ)法(JavaScript)

? ? ① var patt=new RegExp(pattern,modifiers);

? ? ② var patt=/pattern/modifiers;

? ? > pattern(模式) 描述了表達(dá)式的模式

? ? > modifiers(修飾符) 用于指定全局匹配叁怪、區(qū)分大小寫(xiě)的匹配和多行匹配

? ? 注意:當(dāng)使用構(gòu)造函數(shù)創(chuàng)造正則對(duì)象時(shí)深滚,需要常規(guī)的字符轉(zhuǎn)義規(guī)則(在前面加反斜杠 \)。比如官册,以下是等價(jià)的:

? ? var reg = new RegExp("\\w+");

? ? var reg = /\w+/;

修飾符 (修飾符用于執(zhí)行不區(qū)分大小寫(xiě)和全文的搜索难捌。)

? ? 1. i - 修飾符是用來(lái)執(zhí)行不區(qū)分大小寫(xiě)的匹配。

? ? ? ? var str = "Visit RUnoob";

? ? ? ? var patt1 = /runoob/i;

? ? ? ? console.log(str.match(patt1))

? ? ? ? 運(yùn)行結(jié)果:['RUnoob', index: 6, input: 'Visit RUnoob', groups: undefined] ?

? ? ? ? 對(duì)上述代碼運(yùn)行結(jié)果分析如下:

? ? ? ? (1).match方法在有匹配結(jié)果的時(shí)候返回值是一個(gè)數(shù)組员淫。

? ? ? ? (2).index屬性值返回首次匹配到子字符串的位置婴栽。

? ? ? ? (3).input屬性值是原字符串"antzone"愚争。

? ? ? ? (4).groups屬性當(dāng)前并不被支持轰枝,暫時(shí)不做介紹组去。

? ? 2. g - 修飾符是用于執(zhí)行全文的搜索(而不是在找到第一個(gè)就停止查找,而是找到所有的匹配)从隆。

? ? ? ? //全文查找 "is"

? ? ? ? var str = "Is this all there is?";

? ? ? ? var patt1 = /is/g;

? ? ? ? console.log(str.match(patt1))

? ? ? ? 運(yùn)行結(jié)果:(2)?['is', 'is']

? ? -------i g 結(jié)合查找---------

? ? ? ? //全文查找和不區(qū)分大小寫(xiě)搜索 "is"

? ? ? ? var str = "Is this all there is?";

? ? ? ? var patt1 = /is/gi;

? ? ? ? console.log(str.match(patt1));

? ? ? ? 運(yùn)行結(jié)果:(3)?['Is', 'is', 'is']

? ? 3. m - 執(zhí)行多行匹配(使邊界字符 ^ 和 $ 匹配每一行的開(kāi)頭和結(jié)尾键闺,記住是多行,而不是整個(gè)字符串的開(kāi)頭和結(jié)尾筛武。)

? ? ? ? //匹配字符串'an'

? ? ? ? var str = "This is an\n antzone good";

? ? ? ? var reg = /an$/m

? ? ? ? console.log(str.match(reg));

? ? ? ? 運(yùn)行結(jié)果:['an', index: 8, input: 'This is an\n antzone good', groups: undefined]

? ? ? ? 說(shuō)明:可以匹配字符串"an"徘六,因?yàn)椴捎昧硕嘈衅ヅ洹?/p>

? ? ? ? var str = "This is an\n antzone good";

? ? ? ? var reg1 = /an$/

? ? ? ? console.log(str.match(reg1));

? ? ? ? 運(yùn)行結(jié)果:null

? ? ? ? 說(shuō)明:不能夠匹配字符串"an"待锈,盡管"an"后面已經(jīng)換行了炉擅,但是并沒(méi)有采用多行匹配,所以不是字符串行的結(jié)尾眶俩。

? ? -------g m ?結(jié)合匹配-------

? ? ? ? m 修飾符可以使 ^ 和 $ 匹配一段文本中每行的開(kāi)始和結(jié)束位置颠印。

? ? ? ? g 只匹配第一行抹竹,添加 m 之后實(shí)現(xiàn)多行窃判。

? ? ? ? var str = "runoobgoogle\ntaobao\nrunoobweibo";

? ? ? ? var n1 = str.match(/^runoob/g); // 匹配一個(gè)

? ? ? ? var n2 = str.match(/^runoob/gm); // 多行匹配

? ? ? ? console.log(n1)

? ? ? ? console.log(n2)

? ? ? ? 運(yùn)行結(jié)果:['runoob']

? ? ? ? ? ? ? ? (2)?['runoob', 'runoob']

? ? 4. s - 特殊字符圓點(diǎn) . 中包含換行符 \n(默認(rèn)情況下的圓點(diǎn) . 是匹配除換行 ?符 \n 之外的任何字符袄琳,加上 s 修飾符之后, . 中包含換行符 \n唆樊。)

? ? ? ? //在字符串中查找:

? ? ? ? var str = "google\nrunoob\ntaobao";

? ? ? ? var n1 = str.match(/google./); // 沒(méi)有使用 s,無(wú)法匹配\n

? ? ? ? var n2 = str.match(/runoob./s); // 使用 s逗旁,匹配\n

? ? ? ? console.log(n1)

? ? ? ? console.log(n2)

? ? ? ? 運(yùn)行結(jié)果:null

? ? ? ? ? ? ? ? ?['runoob\n', index: 7, input: 'google\nrunoob\ntaobao', groups: undefined]

元字符

? ? \ ? 將下一個(gè)字符標(biāo)記為一個(gè)特殊字符、或一個(gè)原義字符红伦、或一個(gè) 向后引用淀衣、或一個(gè)八進(jìn)制轉(zhuǎn)義符舌缤。例如国撵,'n' 匹配字符 "n"。'\n' 匹配一個(gè)換行符介牙。序列 '\\' 匹配 "\" 而 "\(" 則匹配 "("壮虫。

? ? ^ ? 匹配輸入字符串的開(kāi)始位置。如果設(shè)置了 RegExp 對(duì)象的 Multiline 屬性,^ 也匹配 '\n' 或 '\r' 之后的位置囚似。

? ? $ ? 匹配輸入字符串的結(jié)束位置剩拢。如果設(shè)置了RegExp 對(duì)象的 Multiline 屬性,$ 也匹配 '\n' 或 '\r' 之前的位置饶唤。

? ? * ? 匹配前面的子表達(dá)式零次或多次徐伐。例如,zo* 能匹配 "z" 以及 "zoo"募狂。* 等價(jià)于{0,}办素。

? ? + ? 匹配前面的子表達(dá)式一次或多次祸穷。例如需曾,'zo+' 能匹配 "zo" 以及 "zoo",但不能匹配 "z"桑嘶。+ 等價(jià)于 {1,}讨便。

? ? ? ? 匹配前面的子表達(dá)式零次或一次。例如废菱,"do(es)?" 可以匹配 "do" 或 "does" 。? 等價(jià)于 {0,1}樊零。

? ? {n} n 是一個(gè)非負(fù)整數(shù)夺艰。匹配確定的 n 次。例如,'o{2}' 不能匹配 "Bob" 中的 'o'愕贡,但是能匹配 "food" 中的兩個(gè) o。

? ? {n,} ?n 是一個(gè)非負(fù)整數(shù)。至少匹配n 次篙螟。例如,'o{2,}' 不能匹配 "Bob" 中的 'o',但能匹配 "foooood" 中的所有 o蕾久。'o{1,}' 等價(jià)于 'o+'。'o{0,}' 則等價(jià)于 'o*'。

? ? {n,m} ? m 和 n 均為非負(fù)整數(shù)杯拐,其中n <= m朗兵。最少匹配 n 次且最多匹配 m 次礁鲁。例如冗美,"o{1,3}" 將匹配 "fooooood" 中的前三個(gè) o。'o{0,1}' 等價(jià)于 'o?'。請(qǐng)注意在逗號(hào)和兩個(gè)數(shù)之間不能有空格。

? ? ? ? 當(dāng)該字符緊跟在任何一個(gè)其他限制符 (*, +, ?, {n}, {n,}, {n,m}) 后面時(shí)锅棕,匹配模式是非貪婪的艾岂。非貪婪模式盡可能少的匹配所搜索的字符串,而默認(rèn)的貪婪模式則盡可能多的匹配所搜索的字符串。例如钞啸,對(duì)于字符串 "oooo"梭稚,'o+?' 將匹配單個(gè) "o",而 'o+' 將匹配所有 'o'。

? ? x|y 匹配 x 或 y。例如幔崖,'z|food' 能匹配 "z" 或 "food"。'(z|f)ood' 則匹配 "zood" 或 "food"渣淤。

? ? [xyz] ? 字符集合赏寇。匹配所包含的任意一個(gè)字符。例如价认, '[abc]' 可以匹配 "plain" 中的 'a'渠退。

? ? [^xyz] ?負(fù)值字符集合。匹配未包含的任意字符及穗。例如丸氛, '[^abc]' 可以匹配 "plain" 中的'p'摹察、'l'、'i'杂伟、'n'蕾羊。

? ? [a-z] ? 字符范圍。匹配指定范圍內(nèi)的任意字符割按。例如丈氓,'[a-z]' 可以匹配 'a' 到 'z' 范圍內(nèi)的任意小寫(xiě)字母字符嘉赎。

? ? [^a-z] ?負(fù)值字符范圍关霸。匹配任何不在指定范圍內(nèi)的任意字符识埋。例如,'[^a-z]' 可以匹配任何不在 'a' 到 'z' 范圍內(nèi)的任意字符。

? ? \b ?匹配一個(gè)單詞邊界诵盼,也就是指單詞和空格間的位置。例如骂际, 'er\b' 可以匹配"never" 中的 'er'臼勉,但不能匹配 "verb" 中的 'er'。

? ? \B ?匹配非單詞邊界剧董。'er\B' 能匹配 "verb" 中的 'er'幢尚,但不能匹配 "never" 中的 'er'破停。

? ? \cx ?匹配由 x 指明的控制字符翅楼。例如尉剩, \cM 匹配一個(gè) Control-M 或回車(chē)符。x 的值必須為 A-Z 或 a-z 之一毅臊。否則理茎,將 c 視為一個(gè)原義的 'c' 字符。

? ? \d ?匹配一個(gè)數(shù)字字符管嬉。等價(jià)于 [0-9]皂林。

? ? \D ?匹配一個(gè)非數(shù)字字符。等價(jià)于 [^0-9]蚯撩。

? ? \f ?匹配一個(gè)換頁(yè)符础倍。等價(jià)于 \x0c 和 \cL。

? ? \n ?匹配一個(gè)換行符胎挎。等價(jià)于 \x0a 和 \cJ沟启。

? ? \r ?匹配一個(gè)回車(chē)符。等價(jià)于 \x0d 和 \cM犹菇。

? ? \s ?匹配任何空白字符德迹,包括空格、制表符揭芍、換頁(yè)符等等胳搞。等價(jià)于 [ \f\n\r\t\v]。

? ? \S ?匹配任何非空白字符称杨。等價(jià)于 [^ \f\n\r\t\v]肌毅。

? ? \t ?匹配一個(gè)制表符。等價(jià)于 \x09 和 \cI姑原。

? ? \v ?匹配一個(gè)垂直制表符悬而。等價(jià)于 \x0b 和 \cK。

? ? \w ?匹配字母页衙、數(shù)字摊滔、下劃線(xiàn)。等價(jià)于'[A-Za-z0-9_]'店乐。

? ? \W ?匹配非字母艰躺、數(shù)字、下劃線(xiàn)眨八。等價(jià)于 '[^A-Za-z0-9_]'腺兴。

? ? \xxx ? ?查找以八進(jìn)制數(shù) xxx 規(guī)定的字符。

? ? \xdd ? ?查找以十六進(jìn)制數(shù) dd 規(guī)定的字符廉侧。

? ? \uxxxx ?查找以十六進(jìn)制數(shù) xxxx 規(guī)定的 Unicode 字符页响。

? ? ? // 匹配郵箱的正則表達(dá)式

? ? ? ? var str = "abcd test@runoob.com 1234";

? ? ? ? var patt1 = /\b[\w.%+-]+@[\w.-]+\.[a-zA-Z]{2,6}\b/g;

? ? ? ? console.log(str.match(patt1));

? ? ? ? 運(yùn)行結(jié)果:['test@runoob.com']

?運(yùn)算符優(yōu)先級(jí)

? ? 從最高到最低說(shuō)明了各種正則表達(dá)式運(yùn)算符的優(yōu)先級(jí)順序:

? ? \ ? 轉(zhuǎn)義符

? ? (), (?:), (?=), [] ?括號(hào)和中括號(hào)

? ? *, +, ?, {n}, {n,}, {n,m} ? 限定符

? ? ^, $, \任何元字符篓足、任何字符 ? ? 定位點(diǎn)和序列

? ? | ? 替換

方括號(hào)

? ? [a-z] // 匹配所有的小寫(xiě)字母

? ? [A-Z] // 匹配所有的大寫(xiě)字母

? ? [a-zA-Z] // 匹配所有的字母

? ? [0-9] // 匹配所有的數(shù)字

? ? [0-9\.\-] // 匹配所有的數(shù)字,句號(hào)和減號(hào)

? ? [ \f\r\t\n] // 匹配所有的白字符

? ? [^a-z] //除了小寫(xiě)字母以外的所有字符

? ? [^\\\/\^] //除了(\)(/)(^)之外的所有字符

? ? [^\"\'] //除了雙引號(hào)(")和單引號(hào)(')之外的所有字符

?花括號(hào)的三種不同的用法(一個(gè)數(shù)字 {x} 的意思是前面的字符或字符簇只出現(xiàn)x次 闰蚕;一個(gè)數(shù)字加逗號(hào) {x,} 的意思是前面的內(nèi)容出現(xiàn)x或更多的次數(shù) 栈拖;兩個(gè)數(shù)字用逗號(hào)分隔的數(shù)字 {x,y} 表示 前面的內(nèi)容至少出現(xiàn)x次,但不超過(guò)y次)

? ? ^[a-zA-Z0-9_]{1,}$ ? ? ?// 所有包含一個(gè)以上的字母没陡、數(shù)字或下劃線(xiàn)的字符串

? ? ^[1-9][0-9]{0,}$ ? ? ? ?// 所有的正整數(shù)

? ? ^\-{0,1}[0-9]{1,}$ ? ? ?// 所有的整數(shù)

? ? ^[-]?[0-9]+\.?[0-9]+$ ? // 所有的浮點(diǎn)數(shù)

方法

?exec() 方法用于檢索字符串中的正則表達(dá)式的匹配涩哟。如果字符串中有匹配的值返回該匹配值,否則返回 null盼玄。

? ? var str = "Hello world!";

? ? //查找"Hello"

? ? var a = /Hello/g;

? ? var result = a.exec(str);

? ? console.log("返回值: " + result);

? ? //查找 "World"

? ? b = /World/g;

? ? result = b.exec(str);

? ? console.log("返回值: " + result);

? ? 運(yùn)行結(jié)果:返回值: Hello

? ? ? ? ? ? ?返回值: null

test() 方法用于檢測(cè)一個(gè)字符串是否匹配某個(gè)模式.如果字符串中有匹配的值返回 true 贴彼,否則返回 false。

? ? ?var str = "Hello world!";

? ? //查找"Hello"

? ? ?var a = /Hello/g;

? ? var result = a.test(str);

? ? console.log("返回值: " + result);

? ? //查找 "World"

? ? b = /World/g;

? ? result = b.test(str);

? ? console.log("返回值: " + result);

? ? 運(yùn)行結(jié)果:返回值: true

? ? ? ? ? ? ?返回值: false

常用正則表達(dá)式

? ? 1. Email地址:^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$

? ? 2. 域名:[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(/.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+/.?

? ? 3. InternetURL:[a-zA-z]+://[^\s]* 或 ^http://([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?$

? ? 4. 手機(jī)號(hào)碼:^(13[0-9]|14[5|7]|15[0|1|2|3|5|6|7|8|9]|16[2|5|6|7]|17[0|1|2|3|4|5|6|7|8]|18[0|1|2|3|5|6|7|8|9]|19[0|1|2|3|5|6|7|8|9])\d{8}$

? ? 5. 電話(huà)號(hào)碼("XXX-XXXXXXX"埃儿、"XXXX-XXXXXXXX"器仗、"XXX-XXXXXXX"、"XXX-XXXXXXXX"童番、"XXXXXXX"和"XXXXXXXX):^(\(\d{3,4}-)|\d{3.4}-)?\d{7,8}$

? ? 6. 國(guó)內(nèi)電話(huà)號(hào)碼(0511-4405222精钮、021-87888822):\d{3}-\d{8}|\d{4}-\d{7}

? ? 7. 身份證號(hào)(15位、18位數(shù)字):^\d{15}|\d{18}$

? ? 8. 短身份證號(hào)碼(數(shù)字妓盲、字母x結(jié)尾):^([0-9]){7,18}(x|X)?$ 或 ^\d{8,18}|[0-9x]{8,18}|[0-9X]{8,18}?$

? ? 9. 帳號(hào)是否合法(字母開(kāi)頭杂拨,允許5-16字節(jié),允許字母數(shù)字下劃線(xiàn)):^[a-zA-Z][a-zA-Z0-9_]{4,15}$

? ? 10. 密碼(以字母開(kāi)頭悯衬,長(zhǎng)度在6~18之間弹沽,只能包含字母、數(shù)字和下劃線(xiàn)):^[a-zA-Z]\w{5,17}$

? ? 11. 強(qiáng)密碼(必須包含大小寫(xiě)字母和數(shù)字的組合筋粗,不能使用特殊字符策橘,長(zhǎng)度在8-10之間):^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,10}$

? ? 12. 日期格式:^\d{4}-\d{1,2}-\d{1,2}

? ? 13. 騰訊QQ號(hào):[1-9][0-9]{4,} (騰訊QQ號(hào)從10000開(kāi)始)

? ? 14. 中國(guó)郵政編碼:[1-9]\d{5}(?!\d) (中國(guó)郵政編碼為6位數(shù)字)

? ? 15. IP地址:\d+\.\d+\.\d+\.\d+ (提取IP地址時(shí)有用)

? ? 16. IP地址:((?:(?:25[0-5]|2[0-4]\\d|[01]?\\d?\\d)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d?\\d))

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市娜亿,隨后出現(xiàn)的幾起案子丽已,更是在濱河造成了極大的恐慌,老刑警劉巖买决,帶你破解...
    沈念sama閱讀 219,427評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件沛婴,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡督赤,警方通過(guò)查閱死者的電腦和手機(jī)嘁灯,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,551評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)躲舌,“玉大人丑婿,你說(shuō)我怎么就攤上這事。” “怎么了羹奉?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,747評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵秒旋,是天一觀(guān)的道長(zhǎng)。 經(jīng)常有香客問(wèn)我诀拭,道長(zhǎng)迁筛,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,939評(píng)論 1 295
  • 正文 為了忘掉前任炫加,我火速辦了婚禮瑰煎,結(jié)果婚禮上铺然,老公的妹妹穿的比我還像新娘俗孝。我一直安慰自己,他們只是感情好魄健,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,955評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布赋铝。 她就那樣靜靜地躺著,像睡著了一般沽瘦。 火紅的嫁衣襯著肌膚如雪革骨。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,737評(píng)論 1 305
  • 那天析恋,我揣著相機(jī)與錄音良哲,去河邊找鬼。 笑死助隧,一個(gè)胖子當(dāng)著我的面吹牛筑凫,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播并村,決...
    沈念sama閱讀 40,448評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼巍实,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了哩牍?” 一聲冷哼從身側(cè)響起棚潦,我...
    開(kāi)封第一講書(shū)人閱讀 39,352評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎膝昆,沒(méi)想到半個(gè)月后丸边,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,834評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡荚孵,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,992評(píng)論 3 338
  • 正文 我和宋清朗相戀三年妹窖,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片处窥。...
    茶點(diǎn)故事閱讀 40,133評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡嘱吗,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情谒麦,我是刑警寧澤俄讹,帶...
    沈念sama閱讀 35,815評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站绕德,受9級(jí)特大地震影響患膛,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜耻蛇,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,477評(píng)論 3 331
  • 文/蒙蒙 一踪蹬、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧臣咖,春花似錦跃捣、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,022評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至刁赦,卻和暖如春娶聘,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背甚脉。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,147評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工丸升, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人牺氨。 一個(gè)月前我還...
    沈念sama閱讀 48,398評(píng)論 3 373
  • 正文 我出身青樓狡耻,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親波闹。 傳聞我的和親對(duì)象是個(gè)殘疾皇子酝豪,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,077評(píng)論 2 355

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