成人性生交大片免费看视频r_亚洲综合极品香蕉久久网_在线视频免费观看一区_亚洲精品亚洲人成人网在线播放_国产精品毛片av_久久久久国产精品www_亚洲国产一区二区三区在线播_日韩一区二区三区四区区区_亚洲精品国产无套在线观_国产免费www

主頁 > 知識(shí)庫 > JavaScript系列文章:詳解正則表達(dá)式基本知識(shí)

JavaScript系列文章:詳解正則表達(dá)式基本知識(shí)

熱門標(biāo)簽:css百度地圖標(biāo)注位置顯示 地圖標(biāo)注商戶中心要收錢多少 菏澤智能ai電銷機(jī)器人銷售公司 地圖標(biāo)注字母的軟件 宿遷智能外呼系統(tǒng)供應(yīng)商 鄂州人工智能電銷機(jī)器人軟件 實(shí)用地圖標(biāo)注app 線上教育ai外呼系統(tǒng) 400免費(fèi)電話去哪申請(qǐng)

正則表達(dá)式是一個(gè)精巧的利器,經(jīng)常用來在字符串中查找和替換,JavaScript語言參照Perl,也提供了正則表達(dá)式相關(guān)模塊,開發(fā)當(dāng)中非常實(shí)用,在一些類庫或是框架中,比如jQuery,就存在大量的正則表達(dá)式,所以說學(xué)好正則表達(dá)式,是提高開發(fā)技能的一項(xiàng)基本要求。那么今天博主就來詳細(xì)總結(jié)一下正則表達(dá)式的相關(guān)知識(shí),希望不熟悉的同學(xué)們,也能夠掌握正則表達(dá)式的原理及應(yīng)用。

在JS中,創(chuàng)建正則表達(dá)式有兩種方式,一種是字面量方式,一種是構(gòu)造器方式,如下所示:

var regex = /\w+/;

// 或者

var regex = new RegExp('\\w+');

大家也許注意到,使用字面量要比構(gòu)造器簡潔得多,\w表示一個(gè)word,匹配單個(gè)字母、數(shù)字或下劃線,而使用RegExp構(gòu)造器時(shí),我們的正則變?yōu)榱?\\w",這是因?yàn)橐谧址斜硎疽粋€(gè)反斜杠\,我們需要對(duì)其轉(zhuǎn)義,也就是在前面再加一個(gè)轉(zhuǎn)義字符\。相信大家都知道,要在字面量正則中表達(dá)一個(gè)匹配反斜杠\的正則,只需寫成\\這樣,但在字符串中表達(dá)這個(gè)正則,則是"\\\\"這個(gè)樣子的,這是因?yàn)樽址星皟蓚€(gè)表示一個(gè)反斜杠\,后兩個(gè)也表示一個(gè)反斜杠\,最終在正則層面,結(jié)果還是\\。

對(duì)于上面兩種創(chuàng)建形式,都可以加上一些后綴修飾符,這些修飾符可以單個(gè)使用,也可以組合起來使用:

復(fù)制代碼 代碼如下:

/\w+/g; // global search
/\w+/i; // ignore case
/\w+/m; // multi-line
/\w+/u; // unicode
/\w+/y; // sticky

/\w+/gi;
new RegExp('\\w+', 'gi');


從英文注釋來看,相信大家都大概都略知一二了,需要注意的是u和y修飾符,它們是ES6新增的特性,u表示啟用Unicode模式,對(duì)于匹配中文特別有用,而y是sticky,表示“粘連”,跟g很相似,都屬于全局匹配,但它們也有不同之處,這個(gè)我們后面會(huì)介紹。

正則相關(guān)方法

有了正則表達(dá)式對(duì)象了,如何使用呢?JS中的正則和字符串在原型中均提供相應(yīng)的方法,先來看看正則原型中的兩個(gè)方法:

RegExp.prototype.test(str);
RegExp.prototype.exec(str);

上面的test()和exec()方法都需傳入一個(gè)字符串,對(duì)這個(gè)字符串進(jìn)行搜索和匹配,不同的是,test()方法會(huì)返回true或false,表示字符串和正則是否匹配,而exec()方法在匹配時(shí)返回一個(gè)匹配結(jié)果數(shù)組,如果不匹配,則只返回一個(gè)null值,下面來看看兩者的差異:

// RegExp#test()

var regex = /hello/;
var result = regex.test('hello world');  // true

// RegExp#exec()

var regex = /hello/;
var result = regex.exec('hello world');  // ['hello']

對(duì)于exec()方法,如果正則中含有捕獲組,匹配后則會(huì)出現(xiàn)在結(jié)果數(shù)組中:

// (llo)是一個(gè)捕獲組

var regex = /he(llo)/;
var result = regex.exec('hello world');  // ['hello', 'llo']

開發(fā)當(dāng)中,test()方法一般用于用戶輸入驗(yàn)證,比如郵箱驗(yàn)證,手機(jī)號(hào)驗(yàn)證等等,而exec()方法一般用于從特定內(nèi)容中獲取有價(jià)值的信息,比如從用戶郵箱輸入中獲取其ID和郵箱類型,從手機(jī)號(hào)中獲取此號(hào)碼的歸屬地等等。

字符串相關(guān)方法

上面是正則原型中的兩個(gè)方法,現(xiàn)在來看看字符串原型中都提供了哪些可用的方法:

String.prototype.search(regexp);
String.prototype.match(regexp);
String.prototype.split([separator[, limit]]);
String.prototype.replace(regexp|substr, newSubStr|function);

先來說說String#search()方法,它會(huì)根據(jù)正則參數(shù)對(duì)字符串進(jìn)行匹配搜索,如果匹配成功,就返回第一次匹配處的索引,如果匹配失敗,則返回-1。

// String#search()

'hello world'.search(/hello/);  // 0

'hello world'.search(/hi/);    // -1

String#match()方法跟RegExp#exec()方法相似,會(huì)返回結(jié)果數(shù)組,所不同的是,如果String#match()的正則參數(shù)中含有全局標(biāo)記g,則結(jié)果中會(huì)只出現(xiàn)匹配的子串,而忽略捕獲組,這一點(diǎn)與RegExp#exec()有些出入。且看下面代碼:

// String#match()

'hello hello'.match(/he(llo)/);   // ['hello', 'llo']

// String#match()遇到全局g修飾符時(shí)會(huì)舍棄捕獲組

'hello hello'.match(/he(llo)/g);  // ['hello', 'hello']

// RegExp#exec()仍舊包含捕獲組

/he(llo)/g.exec('hello hello');   // ['hello', 'llo']

所以,如果需要總是將捕獲組作為結(jié)果返回,應(yīng)該使用RegExp#exec()方法,而不是String#match()方法。

接下來說說String#split()方法,這個(gè)方法用于將字符串分割,然后返回一個(gè)包含其子串的數(shù)組結(jié)果,其中separator和limit參數(shù)都是可選的,separator可指定為字符串或正則,limit指定返回結(jié)果個(gè)數(shù)的最大限制。如果separator省略,該方法的數(shù)組結(jié)果中僅包含自身源字符串;如果sparator指定一個(gè)空字符串,則源字符串將被以字符為單位進(jìn)行分割;如果separator是非空字符串或正則表達(dá)式,則該方法會(huì)以此參數(shù)為單位對(duì)源字符串進(jìn)行分割處理。下面代碼演示了該方法的使用:

// String#split()

'hello'.split();         // ["hello"]
'hello'.split('');        // ["h", "e", "l", "l", "o"]
'hello'.split('', 3);       // ["h", "e", "l"]

// 指定一個(gè)非空字符串

var source = 'hello world';
var result = source.split(' ');  // ["hello", "world"]

// 或者使用正則表達(dá)式

var result = source.split(/\s/); // ["hello", "world"]
如果separtor是一個(gè)正則表達(dá)式,并且正則中包含捕獲組,則捕獲組也會(huì)出現(xiàn)在結(jié)果數(shù)組中:
// String#split() 正則捕獲組

var source = 'matchandsplit';

var result = source.split('and');   // ["match", "split"]

var result = source.split(/and/);   // ["match", "split"]

// 正則中含捕獲組

var result = source.split(/(and)/);  // ["match", "and", "split"]

最后來介紹一下String#replace()方法,它會(huì)同時(shí)執(zhí)行查找和替換兩個(gè)操作。

從上面的函數(shù)簽名來看,該方法會(huì)接受兩個(gè)參數(shù):第一個(gè)參數(shù)可以是一個(gè)正則表達(dá)式,也可以是一個(gè)字符串,它們都表示將要匹配的子串;第二個(gè)參數(shù)可以指定一個(gè)字符串或是一個(gè)函數(shù),如果指定一個(gè)字符串,表示這個(gè)字符串將會(huì)替換掉已匹配到的子串,如果指定一個(gè)函數(shù),則函數(shù)的返回值會(huì)替換掉已匹配的子串。

String#replace()方法最終會(huì)返回一個(gè)新的已經(jīng)過替換的字符串。下面分別演示了replace方法的使用:

// String#replace()

var source = 'matchandsplitandreplace';

var result = source.replace('and', '-'); // "match-splitandreplace"

// 或者

var result = source.replace(/and/, function() {
 return '-';
});                    // "match-splitandreplace"

從上面的代碼中可以看到,'and'被替換成了'-',但我們同時(shí)也注意到,只有第一個(gè)'and'被替換了,后面的并沒有被處理。這里我們就需要了解,String#replace()方法只對(duì)第一次出現(xiàn)的匹配串進(jìn)行替換,如果我們需要全局替換,需要將第一個(gè)參數(shù)指定為正則表達(dá)式,并追加全局g修飾符,就像下面這樣:

// String#replace() 全局替換

var source = 'matchandsplitandreplace';

var result = source.replace(/and/g, '-'); // "match-split-replace"

var result = source.replace(/and/g, function() {
 return '-';
});                    // "match-split-replace"

初學(xué)者看到上面的代碼,可能會(huì)覺得疑惑,對(duì)于第二個(gè)參數(shù),直接指定一個(gè)字符串也挺簡單的嘛,我們?yōu)楹我褂靡粋€(gè)函數(shù)然后再返回一個(gè)值呢。我們看看下面的例子就知道了:

// String#replace() 替換函數(shù)的參數(shù)列表

var source = 'matchandsplitandreplace';

var result = source.replace(/(a(nd))/g, function(match, p1, p2, offset, string) {
 
 console.group('match:');
 console.log(match, p1, p2, offset, string);
 console.groupEnd();

 return '-';
});                    // "match-split-replace"

上面代碼中,第一個(gè)參數(shù)是正則表達(dá)式,其中包含了兩個(gè)捕獲組(and)和(nd),第二個(gè)參數(shù)指定一個(gè)匿名函數(shù),其函數(shù)列表中有一些參數(shù):match, p1, p2, offset, string,分別對(duì)應(yīng)匹配到的子串、第一個(gè)捕獲組、第二個(gè)捕獲組、匹配子串在源字符串中的索引、源字符串,我們可以稱這個(gè)匿名函數(shù)為“replacer”或“替換函數(shù)”,在替換函數(shù)的參數(shù)列表中,match、offset和string在每一次匹配時(shí)總是存在的,而中間的p1、p2等捕獲組,String#replace()方法會(huì)根據(jù)實(shí)際匹配情況去填充,當(dāng)然,我們還可以根據(jù)arguments獲取到這些參數(shù)值。

下面是代碼運(yùn)行后的控制臺(tái)打印結(jié)果:

現(xiàn)在來看,指定一個(gè)函數(shù)要比指定一個(gè)字符串功能強(qiáng)的多,每次匹配都能獲取到這些有用的信息,我們可以對(duì)其進(jìn)行一些操作處理,最后再返回一個(gè)值,作為要替換的新子串。所以推薦在調(diào)用String#replace()方法時(shí),使用上面這種方式。

上面是String類與正則相關(guān)的常用方法,需要注意的是,String#search()和String#match()方法簽名中參數(shù)均為正則對(duì)象,如果我們傳遞了其他類型的參數(shù),會(huì)被隱式轉(zhuǎn)換為正則對(duì)象,具體的步驟是先調(diào)用參數(shù)值的toString()方法得到字符串類型的值,然后調(diào)用new RegExp(val)得到正則對(duì)象:

// -> String#search(new RegExp(val.toString()))

'123 123'.search(1);    // 0
'true false'.search(true); // 0

'123 123'.search('\\s');  // 3

var o = {
 toString: function() {
  return '\\s';
 }
};
'123 123'.search(o);    // 3

// -> String#match(new RegExp(val.toString()))

'123 123'.match(1);     // ["1"]
'true false'.match(true);  // ["true"]

'123 123'.match('\\s');   // [" "]

var o = {
 toString: function() {
  return '1(23)';
 }
};
'123 123'.match(o);     // "123", "23"]

而split()和replace()方法不會(huì)將字符串轉(zhuǎn)為正則表達(dá)式對(duì)象,對(duì)于其他類型值,只會(huì)調(diào)用其toString()方法將參數(shù)值轉(zhuǎn)為字符串,也不會(huì)進(jìn)一步向正則轉(zhuǎn)換,大家可以親自測(cè)試一下。

以上就是正則的相關(guān)基本知識(shí)及常用方法,限于篇幅原因,更多關(guān)于正則表達(dá)式的內(nèi)容,博主會(huì)安排在下一篇中介紹和講解,敬請(qǐng)期待。

您可能感興趣的文章:
  • JavaScript正則表達(dá)式校驗(yàn)非零的負(fù)整數(shù)實(shí)例
  • JavaScript正則表達(dá)式校驗(yàn)非負(fù)整數(shù)實(shí)例
  • JavaScript正則表達(dá)式校驗(yàn)非正整數(shù)實(shí)例
  • JavaScript利用正則表達(dá)式替換字符串中的內(nèi)容
  • 利用js正則表達(dá)式校驗(yàn)正數(shù)、負(fù)數(shù)、和小數(shù)
  • JS正則表達(dá)式的驗(yàn)證
  • JS常用正則表達(dá)式及驗(yàn)證時(shí)間的正則表達(dá)式
  • js正則表達(dá)式學(xué)習(xí)和總結(jié)(必看篇)
  • js正則表達(dá)式驗(yàn)證URL函數(shù)代碼(方便多個(gè)正則對(duì)比)
  • js匹配網(wǎng)址url的正則表達(dá)式集合
  • JavaScript正則表達(dá)式校驗(yàn)非零的正整數(shù)實(shí)例

標(biāo)簽:綿陽 梅州 池州 六安 鞍山 恩施 三亞 咸陽

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《JavaScript系列文章:詳解正則表達(dá)式基本知識(shí)》,本文關(guān)鍵詞  JavaScript,系列,文章,詳解,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《JavaScript系列文章:詳解正則表達(dá)式基本知識(shí)》相關(guān)的同類信息!
  • 本頁收集關(guān)于JavaScript系列文章:詳解正則表達(dá)式基本知識(shí)的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    日本黄色a视频| 白白色 亚洲乱淫| 成人免费看片网站| 中文字幕在线三区| 亚洲精品成人在线视频| 欧美丰满一区二区免费视频| 女同一区二区三区| 日韩av不卡在线| 国产精品一区二区在线观看| 97欧美精品一区二区三区| 国产一区二区三区在线看| 欧美亚洲在线日韩| 久久久久亚洲蜜桃| 亚洲男人天堂2024| 在线一区二区不卡| 91成人免费| 免费91在线视频| 成人亚洲精品7777| 少妇久久久久久久| 337p日本欧洲亚洲大胆鲁鲁| 亚洲精品福利视频| 神马一区二区影院| 欧美日韩国产综合视频在线观看中文| 好吊色欧美一区二区三区四区| 欧美一级视频免费| 国产欧美欧洲在线观看| 欧美国产精品专区| 欧美黄色免费网站| 国产蜜臀一区二区打屁股调教| 操碰在线免费| 国内精品免费视频| 91久久夜色精品国产九色| 51ⅴ精品国产91久久久久久| 国产精品一色哟哟哟| 亚洲一区二区av电影| 欧美日韩黄色一级片| 日韩不卡在线视频| 成人一区二区免费视频| 欧美精品免费在线观看| 糖心vlog免费在线观看| 韩国理伦片一区二区三区在线播放| 久久精品免费观看| 日本在线人成| 国内精品写真在线观看| 欧美大片免费观看在线观看网站推荐| 久久99久久99精品中文字幕| 福利小视频在线| 久久久国产精品午夜一区ai换脸| 综合图区亚洲白拍在线| а√在线中文网新版地址在线| 香蕉加勒比综合久久| 欧美精品二区| 宅男噜噜噜66国产免费观看| 涩涩涩999| av电影一区| 超碰caoporn久久| 91九色综合久久| www.黄色网| 91sp网站在线观看入口| 国产精品xxx在线观看www| 亚洲情趣在线观看| 日本一区二区三区免费乱视频| 成人黄色片免费| 精品国产乱码久久久久久浪潮| 日韩精品一区二区三| 国产一区二区三区四区五区美女| 国产在线视频一区二区三区| 欧美日韩在线视频观看| 久久久久久久一区二区三区| 美女呻吟一区| 国产剧情在线一区| 欧美丝袜丝交足nylons| 国产真人无遮挡作爱免费视频| 国产乱淫av一区二区三区| 色悠悠国产精品| 久久久久久久麻豆| 成人国产精品免费| 97碰碰碰免费色视频| 真不卡电影网| 18国产精品| 久久的精品视频| 9191成人精品久久| 久久精品国产免费观看| 91美女视频网站| 91精品国产综合久久久久久久久| 91精品国产综合久久久蜜臀图片| 免费大片在线观看| 亚洲综合网站在线观看| 免费一级在线观看| 老妇喷水一区二区三区| 精品一区二区视频| 国产999在线观看| 亚洲精一区二区三区| 欧美丰满日韩| 九九久久精品这里久久网| www.97超碰| 天天操天天摸天天干| 开心九九激情九九欧美日韩精美视频电影| 成人禁用看黄a在线| 无码人妻aⅴ一区二区三区| 99精品国产91久久久久久| 国产精品v亚洲精品v日韩精品| av电影免费在线| 中文字幕在线永久在线视频| 欧美精品久久| 欧美无人高清视频在线观看| 免费观影入口看日本视频| av网站一区二区三区| 亚州男人的天堂| 美女久久久久久久久| 99riav一区二区三区| 国产精品一二三| 在线免费观看a级片| 精品一区中文字幕| 中文字幕一区二区三| 亚洲三级在线观看| 中文字幕久精品免| 欧美一区二区三区四区视频| 亚洲午夜免费| 一区二区三区四区av| 久久影院亚洲| 92国产精品久久久久首页| 国产精品成人免费一区久久羞羞| 亚洲欧美日韩精品永久在线| 红桃视频成人在线观看| 欧美激情精品久久| 少妇激情一区二区三区视频| 久久夜色精品| 国产成人香蕉在线视频网站| 日韩高清免费观看| 风流老熟女一区二区三区| 国产一级片在线| 欧美一区二区啪啪| 男人天堂视频在线| 国产美女在线观看| 国产成人va亚洲电影| 91精品论坛| 国产精品理论片| 欧美福利小视频| 一区二区三区免费视频播放器| 久久一区二区三区欧美亚洲| 免费福利视频网站| 国产1区在线| 亚洲第九十九页| 久久精品a一级国产免视看成人| a级影片在线观看| 992tv在线观看免费进| 亚洲欧美精品中文字幕在线| 男人c女人视频| 青青草娱乐在线| 欧美理论在线观看| 粗大黑人巨茎大战欧美成人| 男人亚洲天堂网| 教室别恋欧美无删减版| 国产一区二区在线观看视频| 欧美亚洲视频一区| 国产一二三四区在线观看| 性一爱一乱一交一视频| 亚洲嫩草精品久久| 蜜臀av免费观看| 日本一区二区三区四区高清视频| 成人精品动漫| 香蕉久久aⅴ一区二区三区| h网站在线播放| 日韩激情网站| 久久久久久久久久网站| 国产免费无遮挡| wwwcom羞羞网站| 色三级在线观看| 91精品欧美综合在线观看最新| 粗大的内捧猛烈进出在线视频| av在线女优影院| 精品深夜av无码一区二区老年| 免费在线a视频| 99热99re6国产在线播放| 91福利国产精品| av亚洲免费| 亚洲xxxxx| 无码人妻精品一区二区三区温州| 精品久久av| 欧美动物xxx| 神马国产精品影院av| 国内久久久精品| 深夜福利一区二区三区| 91黑丝在线| 看黄在线观看| 一区二区三区免费视频网站| 91国模少妇一区二区三区| 久久亚洲精品网站| 国产日韩欧美一区二区三区| 久久精品国产美女| 久久mv成人精品亚洲动漫| 欧美日韩123区| 色在线视频免费| 亚洲国产av一区二区三区| 97国产精品视频人人做人人爱| 看全色黄大色大片| 日韩精品欧美激情| 欧美成人亚洲成人日韩成人| 97人人做人人爱| 亚洲狼人在线| 日本最新一区二区三区视频观看| 亚洲综合在线第一页| 99麻豆久久久国产精品免费| 国产三级欧美三级| 国产女人伦码一区二区三区不卡| 久久精品亚洲乱码伦伦中文| 色综合伊人色综合网| 欧美性视频一区二区三区| 欧美一级搡bbbb搡bbbb| 日韩理论片一区二区| 亚洲精品一区二区在线播放∴| 影音先锋中文字幕在线| 欧美成人高清电影在线| 欧美性受xxxx黑人猛交88| 午夜不卡视频| 高清在线视频日韩欧美| 欧美国产1区2区| 麻豆精品国产免费| 自拍偷拍第八页| 国产精品美女久久久久久不卡| 欧美日韩视频专区在线播放| 久久精品欧美一区| av片在线观看永久免费| 中文字幕一区二区精品| 2021av天天| 一本大道香蕉久久| jvid福利写真一区二区三区| 日韩av一区二区三区在线观看| 亚洲卡通动漫在线| 污污视频免费看| 91狠狠综合久久久| 免费日韩一级片| 天天色棕合合合合合合合| 极品白嫩丰满美女无套| 激情小说激情视频| 久久99精品久久久久久三级| av在线1区2区| 精品一区二区三区人妻| 色诱色偷偷久久综合| 91超薄肉色丝袜交足高跟凉鞋| 九九热爱视频精品视频高清| 日韩av电影免费在线观看| 亚洲国产精品无码av| 欧美激情精品在线| 中文字幕校园春色| 欧美视频专区一二在线观看| 欧美韩国理论所午夜片917电影| 91好色先生tv| 久热国产视频| 欧美 日韩 国产精品免费观看| 欧美一区在线观看视频| 啪啪导航网站| 人妻一区二区三区免费| 久久久久久久久艹| 久久久久久亚洲中文字幕无码| 亚洲男人天堂av网| 一区二区高清不卡| 三级在线视频| 日本黄色特级片| 天堂电影在线| 国产成人高潮免费观看精品| 亚洲精品久久久久中文字幕欢迎你| 日韩有码片在线观看| 毛片女人与拘交视频| 久久精品国产精品亚洲红杏| 亚洲精品aaaa| 免费网站观看电影入口| 国产精品videosex性欧美| 91 视频免费观看| 91亚洲精选| www.久久久久久久久| 国产无限制自拍| 五月天久久久| 66av99| 日韩有吗在线观看| 国产传媒欧美日韩成人精品大片| 91麻豆精品国产91久久久久久| 国产一区二区三区电影在线观看| 伊人永久在线| 欧美性猛交xxxx乱大交| 欧美日韩亚洲网| 亚洲一区成人| 亚洲中文字幕在线一区| 色丁香久综合在线久综合在线观看| 人妻精品久久久久中文字幕| xxx欧美精品| 中文字幕av久久爽av| 亚洲中文字幕无码不卡电影| 亚洲欧美视频在线观看视频| 日本精品影院| 精品人伦一区二区三区| 狠狠色噜噜狠狠| 国产精品99久久久久久动医院| 欧美精品在线视频| www.五月婷婷.com| 4438x成人网最大色成网站| 国产三区在线视频| 艳妇臀荡乳欲伦亚洲一区| 欧美亚洲国产精品久久| 免费在线观看亚洲视频| 久本草在线中文字幕亚洲| 久久99这里只有精品| 免费av片风间由美在线| 欧美日韩成人在线播放| 女人又爽又黄免费女仆| 久久久久久久亚洲| 欧美日韩在线三区| 国产精品国产三级国产aⅴ| 欧美在线不卡一区| 日本爱爱爱视频| 美女久久网站| 快播电影网址老女人久久| 68精品国产免费久久久久久婷婷| 亚洲国产裸拍裸体视频在线观看乱了| 最近2019年好看中文字幕视频| 91tv官网精品成人亚洲| 69久成人做爰电影| 一区二区日韩欧美| 久久av高潮av| 蜜桃av综合| 国产日韩专区在线| 精品国内亚洲在观看18黄| 欧美视频观看一区| 日韩有码电影| 一本大道久久精品懂色aⅴ| 国产日本在线视频| 2021中文字幕在线|