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

主頁 > 知識庫 > js中的正則表達(dá)式入門(大量實(shí)例代碼)

js中的正則表達(dá)式入門(大量實(shí)例代碼)

熱門標(biāo)簽:百度地圖標(biāo)注名編輯 安徽移動(dòng)外呼系統(tǒng) 個(gè)性化地圖標(biāo)注在線 清遠(yuǎn)陽山400電話號碼如何申請 施工地圖標(biāo)注怎么做 百度地圖標(biāo)注飯店位置怎么 深圳400電話辦理那家好 襄陽房產(chǎn)電銷機(jī)器人招商 怎么在高德地圖標(biāo)注行走軌跡

什么是正則表達(dá)式呢?

正則表達(dá)式(regular expression)描述了一種字符串匹配的模式,可以用來檢查一個(gè)字符串是否含有某種子串、將匹配的子串做替換或者從某個(gè)字符串中取出符合某個(gè)條件的子串等。

先科普一下基本的知識

 js中使用正則表達(dá)式,除了了解正則表達(dá)式基本的匹配規(guī)則外。還需要了解下面的基本的知識:

python,js,groovy這些腳本語言都有在線調(diào)試的網(wǎng)站,可以在線測試是否有語法錯(cuò)誤,用起來也很方便。

var reg = new RegExp('\\d{8-20}')

reg.test(“11111111a”)

這里的\\,第一個(gè)\是轉(zhuǎn)義符,用于轉(zhuǎn)義。

上面的例子還可以寫成:

var reg = new RegExp(/\d{8-20}/)

reg.test(“11111111a”)

test可以測試字符串是否匹配正則表達(dá)是的規(guī)則,exec、match用于捕獲匹配的子串。

說白了正則表達(dá)式就是處理字符串的,我們可以用它來處理一些復(fù)雜的字符串。

為什么要學(xué)習(xí)正則表達(dá)式

我們直接用一個(gè)例子來說明

//找出這個(gè)字符串中的所有數(shù)字
var str = 'abc123de45fgh6789qqq111';
//方法1
 function findNum(str) {
 var tmp = '',
  arr = [];
 for (var i = 0; i  str.length; i++) {
  var cur = str[i];
  if (!isNaN(cur)) {
  tmp += cur;
  } else {
  if (tmp) {
   arr.push(tmp);
   tmp = '';
  }
  }
 }
 if (tmp) {
  arr.push(tmp)
 }
 return arr;
 }
 console.log(findNum(str))
 //["123", "45", "6789", "111"]
 
//方法2 使用正則表達(dá)式
 var reg = /\d+/g;
 console.log(str.match(reg))
 // ["123", "45", "6789", "111"]

通過比較2種方法我們明顯看出在對字符串進(jìn)行處理時(shí),使用正則表達(dá)式會(huì)簡單許多,所以雖然正則表達(dá)式看起來像是火星文一樣的一堆亂碼的東西,但我們還是有必要去學(xué)習(xí)它的。

正則表達(dá)式的創(chuàng)建方式

1、字面量創(chuàng)建方式
2、實(shí)例創(chuàng)建方式

var reg = /pattern/flags
 // 字面量創(chuàng)建方式
 var reg = new RegExp(pattern,flags);
 //實(shí)例創(chuàng)建方式
 
 pattern:正則表達(dá)式 
 flags:標(biāo)識(修飾符)
 標(biāo)識主要包括:
 1. i 忽略大小寫匹配
 2. m 多行匹配,即在到達(dá)一行文本末尾時(shí)還會(huì)繼續(xù)尋常下一行中是否與正則匹配的項(xiàng)
 3. g 全局匹配 模式應(yīng)用于所有字符串,而非在找到第一個(gè)匹配項(xiàng)時(shí)停止

字面量創(chuàng)建方式和構(gòu)造函數(shù)創(chuàng)建方式的區(qū)別

字面量創(chuàng)建方式不能進(jìn)行字符串拼接,實(shí)例創(chuàng)建方式可以

var regParam = 'cm';
var reg1 = new RegExp(regParam+'1');
var reg2 = /regParam/;
console.log(reg1); // /cm1/
console.log(reg2); // /regParam/

字面量創(chuàng)建方式特殊含義的字符不需要轉(zhuǎn)義,實(shí)例創(chuàng)建方式需要轉(zhuǎn)義

var reg1 = new RegExp('\d'); // /d/ 
var reg2 = new RegExp('\\d') // /\d/
var reg3 = /\d/;  // /\d/

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

\d : 0-9之間的任意一個(gè)數(shù)字 \d只占一個(gè)位置
\w : 數(shù)字,字母 ,下劃線 0-9 a-z A-Z _
\s : 空格或者空白等
\D : 除了\d
\W : 除了\w
\S : 除了\s
. : 除了\n之外的任意一個(gè)字符
\ : 轉(zhuǎn)義字符
| : 或者
() : 分組
\n : 匹配換行符
\b : 匹配邊界 字符串的開頭和結(jié)尾 空格的兩邊都是邊界 => 不占用字符串位數(shù)
^ : 限定開始位置 => 本身不占位置
$ : 限定結(jié)束位置 => 本身不占位置
[a-z] : 任意字母 []中的表示任意一個(gè)都可以
[^a-z] : 非字母 []中^代表除了
[abc] : abc三個(gè)字母中的任何一個(gè) [^abc]除了這三個(gè)字母中的任何一個(gè)字符

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

* : 0到多個(gè)
+ : 1到多個(gè)
? : 0次或1次 可有可無
{n} : 正好n次;
{n,} : n到多次
{n,m} : n次到m次

量詞出現(xiàn)在元字符后面 如\d+,限定出現(xiàn)在前面的元字符的次數(shù)

var str = '1223334444';
var reg = /\d{2}/g;
var res = str.match(reg);
console.log(res) //["12", "23", "33", "44", "44"]

var str =' 我是空格君 ';
var reg = /^\s+|\s+$/g; //匹配開頭結(jié)尾空格
var res = str.replace(reg,'');
console.log('('+res+')') //(我是空格君)

正則中的()和[]和重復(fù)子項(xiàng) //拿出來單獨(dú)說一下

一般[]中的字符沒有特殊含義 如+就表示+

但是像\w這樣的還是有特殊含義的

var str1 = 'abc';
var str2 = 'dbc';
var str3 = '.bc';
var reg = /[ab.]bc/; //此時(shí)的.就表示.
reg.test(str1) //true
reg.test(str2) //false
reg.test(str3) //true

[]中,不會(huì)出現(xiàn)兩位數(shù)

[12]表示1或者2 不過[0-9]這樣的表示0到9 [a-z]表示a到z
例如:匹配從18到65年齡段所有的人
var reg = /[18-65]/; // 這樣寫對么
reg.test('50')
reg = /(18|19)|([2-5]\d)|(6[0-5])/;

Uncaught SyntaxError: Invalid regular expression: /[18-65]/: Range out of order in character class 聰明的你想可能是8-6這里不對,于是改成[16-85]似乎可以匹配16到85的年齡段的,但實(shí)際上發(fā)現(xiàn)這也是不靠譜的實(shí)際上我們匹配這個(gè)18-65年齡段的正則我們要拆開來匹配我們拆成3部分來匹配 18-19 20-59 60-65

()的提高優(yōu)先級功能:凡是有|出現(xiàn)的時(shí)候,我們一定要注意是否有必要加上()來提高優(yōu)先級;

()的分組 重復(fù)子項(xiàng) (兩個(gè)放到一起說)

分組:
只要正則中出現(xiàn)了小括號那么就會(huì)形成一份分組
只要有分組,exec(match)和replace中的結(jié)果就會(huì)發(fā)生改變(后邊的正則方法中再說)

分組的引用(重復(fù)子項(xiàng)) :
只要在正則中出現(xiàn)了括號就會(huì)形成一個(gè)分組,我們可以通過\n (n是數(shù)字代表的是第幾個(gè)分組)來引用這個(gè)分組,第一個(gè)小分組我們可以用\1來表示

例如:求出這個(gè)字符串'abAAbcBCCccdaACBDDabcccddddaab'中出現(xiàn)最多的字母,并求出出現(xiàn)多少次(忽略大小寫)。

var str = 'abbbbAAbcBCCccdaACBDDabcccddddaab';
 str = str.toLowerCase().split('').sort(function(a,b){return a.localeCompare(b)}).join('');

 var reg = /(\w)\1+/ig;
 var maxStr = '';
 var maxLen = 0;
 str.replace(reg,function($0,$1){
 var regLen = $0.length;
 if(regLen>maxLen){
  maxLen = regLen;
  maxStr = $1;
 }else if(maxLen == regLen){
  maxStr += $1;
 }
 })
 console.log(`出現(xiàn)最多的字母是${maxStr},共出現(xiàn)了${maxLen}次`)

當(dāng)我們加()只是為了提高優(yōu)先級而不想捕獲小分組時(shí),可以在()中加?:來取消分組的捕獲

var str = 'aaabbb';
var reg = /(a+)(?:b+)/;
var res =reg.exec(str);
console.log(res)
//["aaabbb", "aaa", index: 0, input: "aaabbb"]
//只捕獲第一個(gè)小分組的內(nèi)容

正則運(yùn)算符的優(yōu)先級

  1. 正則表達(dá)式從左到右進(jìn)行計(jì)算,并遵循優(yōu)先級順序,這與算術(shù)表達(dá)式非常類似。
  2. 相同優(yōu)先級的會(huì)從左到右進(jìn)行運(yùn)算,不同優(yōu)先級的運(yùn)算先高后低。

下面是常見的運(yùn)算符的優(yōu)先級排列

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

\ : 轉(zhuǎn)義符
(), (?:), (?=), [] => 圓括號和方括號
*, +, ?, {n}, {n,}, {n,m} => 量詞限定符
^, $, \任何元字符、任何字符
| => 替換,"或"操作

字符具有高于替換運(yùn)算符的優(yōu)先級,一般用 | 的時(shí)候,為了提高 | 的優(yōu)先級,我們常用()來提高優(yōu)先級
如: 匹配 food或者foot的時(shí)候 reg = /foo(t|d)/ 這樣來匹配

正則的特性

1、貪婪性
所謂的貪婪性就是正則在捕獲時(shí),每一次會(huì)盡可能多的去捕獲符合條件的內(nèi)容。
如果我們想盡可能的少的去捕獲符合條件的字符串的話,可以在量詞元字符后加?

2、懶惰性
懶惰性則是正則在成功捕獲一次后不管后邊的字符串有沒有符合條件的都不再捕獲。
如果想捕獲目標(biāo)中所有符合條件的字符串的話,我們可以用標(biāo)識符g來標(biāo)明是全局捕獲

var str = '123aaa456';
var reg = /\d+/; //只捕獲一次,一次盡可能多的捕獲
var res = str.match(reg)
console.log(res)
// ["123", index: 0, input: "123aaa456"]
reg = /\d+?/g; //解決貪婪性、懶惰性
res = str.match(reg)
console.log(res)
// ["1", "2", "3", "4", "5", "6"]

和正則相關(guān)的一些方法

這里我們只介紹test、exec、match和replace這四個(gè)方法

reg.test(str) 用來驗(yàn)證字符串是否符合正則 符合返回true 否則返回false

var str = 'abc';
var reg = /\w+/;
console.log(reg.test(str)); //true

reg.exec() 用來捕獲符合規(guī)則的字符串

var str = 'abc123cba456aaa789';
var reg = /\d+/;
console.log(reg.exec(str))
// ["123", index: 3, input: "abc123cba456aaa789"];
console.log(reg.lastIndex)
// lastIndex : 0 

reg.exec捕獲的數(shù)組中 
// [0:"123",index:3,input:"abc123cba456aaa789"]
0:"123" 表示我們捕獲到的字符串
index:3 表示捕獲開始位置的索引
input 表示原有的字符串

當(dāng)我們用exec進(jìn)行捕獲時(shí),如果正則沒有加'g'標(biāo)識符,則exec捕獲的每次都是同一個(gè),當(dāng)正則中有'g'標(biāo)識符時(shí) 捕獲的結(jié)果就不一樣了,我們還是來看剛剛的例子

var str = 'abc123cba456aaa789';
var reg = /\d+/g; //此時(shí)加了標(biāo)識符g
console.log(reg.lastIndex)
// lastIndex : 0 

console.log(reg.exec(str))
// ["123", index: 3, input: "abc123cba456aaa789"]
console.log(reg.lastIndex)
// lastIndex : 6

console.log(reg.exec(str))
// ["456", index: 9, input: "abc123cba456aaa789"]
console.log(reg.lastIndex)
// lastIndex : 12

console.log(reg.exec(str))
// ["789", index: 15, input: "abc123cba456aaa789"]
console.log(reg.lastIndex)
// lastIndex : 18

console.log(reg.exec(str))
// null
console.log(reg.lastIndex)
// lastIndex : 0

每次調(diào)用exec方法時(shí),捕獲到的字符串都不相同
lastIndex :這個(gè)屬性記錄的就是下一次捕獲從哪個(gè)索引開始。
當(dāng)未開始捕獲時(shí),這個(gè)值為0。
如果當(dāng)前次捕獲結(jié)果為null。那么lastIndex的值會(huì)被修改為0.下次從頭開始捕獲。
而且這個(gè)lastIndex屬性還支持人為賦值。

exec的捕獲還受分組()的影響

var str = '2017-01-05';
var reg = /-(\d+)/g
// ["-01", "01", index: 4, input: "2017-01-05"]
"-01" : 正則捕獲到的內(nèi)容
"01" : 捕獲到的字符串中的小分組中的內(nèi)容

str.match(reg) 如果匹配成功,就返回匹配成功的數(shù)組,如果匹配不成功,就返回null

//match和exec的用法差不多
var str = 'abc123cba456aaa789';
var reg = /\d+/;
console.log(reg.exec(str));
//["123", index: 3, input: "abc123cba456aaa789"]
console.log(str.match(reg));
//["123", index: 3, input: "abc123cba456aaa789"]

上邊兩個(gè)方法console的結(jié)果有什么不同呢?二個(gè)字符串是一樣滴。
當(dāng)我們進(jìn)行全局匹配時(shí),二者的不同就會(huì)顯現(xiàn)出來了.

var str = 'abc123cba456aaa789';
var reg = /\d+/g;
console.log(reg.exec(str));
// ["123", index: 3, input: "abc123cba456aaa789"]
console.log(str.match(reg));
// ["123", "456", "789"]

當(dāng)全局匹配時(shí),match方法會(huì)一次性把符合匹配條件的字符串全部捕獲到數(shù)組中,
如果想用exec來達(dá)到同樣的效果需要執(zhí)行多次exec方法。

我們可以嘗試著用exec來簡單模擬下match方法的實(shí)現(xiàn)。

String.prototype.myMatch = function (reg) {
 var arr = [];
 var res = reg.exec(this);
 if (reg.global) {
 while (res) {
  arr.push(res[0]);
  res = reg.exec(this)
 }
 }else{
 arr.push(res[0]);
 }
 return arr;
}

var str = 'abc123cba456aaa789';
var reg = /\d+/;
console.log(str.myMatch(reg))
// ["123"]

var str = 'abc123cba456aaa789';
var reg = /\d+/g;
console.log(str.myMatch(reg))
// ["123", "456", "789"]

此外,match和exec都可以受到分組()的影響,不過match只在沒有標(biāo)識符g的情況下才顯示小分組的內(nèi)容,如果有全局g,則match會(huì)一次性全部捕獲放到數(shù)組中

var str = 'abc';
var reg = /(a)(b)(c)/;

console.log( str.match(reg) );
// ["abc", "a", "b", "c", index: 0, input: "abc"]
console.log( reg.exec(str) );
// ["abc", "a", "b", "c", index: 0, input: "abc"]


當(dāng)有全局g的情況下
var str = 'abc';
var reg = /(a)(b)(c)/g;
console.log( str.match(reg) );
// ["abc"]
console.log( reg.exec(str) );
// ["abc", "a", "b", "c", index: 0, input: "abc"]

str.replace() 這個(gè)方法大家肯定不陌生,現(xiàn)在我們要說的就是和這個(gè)方法和正則相關(guān)的東西了。

正則去匹配字符串,匹配成功的字符去替換成新的字符串

寫法:str.replace(reg,newStr);

var str = 'a111bc222de';
var res = str.replace(/\d/g,'Q')
console.log(res)
// "aQQQbcQQQde"

//replace的第二個(gè)參數(shù)也可以是一個(gè)函數(shù)
str.replace(reg,fn);

var str = '2017-01-06';
str = str.replace(/-\d+/g,function(){
 console.log(arguments)
})

//控制臺打印結(jié)果:
["-01", 4, "2017-01-06"]
["-06", 7, "2017-01-06"]
"2017undefinedundefined"
//從打印結(jié)果我們發(fā)現(xiàn)每一次輸出的值似乎跟exec捕獲時(shí)很相似,既然與exec似乎很相似,那么似乎也可以打印出小分組中的內(nèi)容嘍 

var str = '2017-01-06';
str = str.replace(/-(\d+)/g,function(){
 console.log(arguments)
})
["-01", "01", 4, "2017-01-06"]
["-06", "06", 7, "2017-01-06"]
"2017undefinedundefined"
//從結(jié)果看來我們的猜測沒問題。

此外,我們需要注意的是,如果我們需要替換replace中正則找到的字符串,函數(shù)中需要一個(gè)返回值去替換正則捕獲的內(nèi)容。
通過replace方法獲取url中的參數(shù)的方法

(function(pro){
 function queryString(){
 var obj = {},
  reg = /([^?#+]+)=([^?#+]+)/g;
 this.replace(reg,function($0,$1,$2){
  obj[$1] = $2;
 })
 return obj;
 }
 pro.queryString = queryString;
}(String.prototype));

// 例如 url為 https://www.baidu.com?a=1b=2
// window.location.href.queryString();
// {a:1,b:2}

零寬斷言

用于查找在某些內(nèi)容(但并不包括這些內(nèi)容)之前或之后的東西,如\b,^,$那樣用于指定一個(gè)位置,這個(gè)位置應(yīng)該滿足一定的條件(即斷言),因此它們也被稱為零寬斷言。

在使用正則表達(dá)式時(shí),捕獲的內(nèi)容前后必須是特定的內(nèi)容,而我們又不想捕獲這些特定內(nèi)容的時(shí)候,零寬斷言就可以派上用場了。

  • 零寬度正預(yù)測先行斷言 (?=exp)
  • 零寬度負(fù)預(yù)測先行斷言 (?!exp)
  • 零寬度正回顧后發(fā)斷言 (?=exp)
  • 零寬度負(fù)回顧后發(fā)斷言 (?!exp)

這四胞胎看著名字好長,給人一種好復(fù)雜好難的感覺,我們還是挨個(gè)來看看它們究竟是干什么的吧。

(?=exp) 這個(gè)簡單理解就是說字符出現(xiàn)的位置的右邊必須匹配到exp這個(gè)表達(dá)式。

var str = "i'm singing and dancing";
var reg = /\b(\w+(?=ing\b))/g
var res = str.match(reg);
console.log(res)
// ["sing", "danc"]

注意一點(diǎn),這里說到的是位置,不是字符。

var str = 'abc';
var reg = /a(?=b)c/;
console.log(res.test(str)); // false

// 這個(gè)看起來似乎是正確的,實(shí)際上結(jié)果是false

reg中a(?=b)匹配字符串'abc' 字符串a(chǎn)的右邊是b這個(gè)匹配沒問題,接下來reg中a(?=b)后邊的c匹配字符串時(shí)是從字符串'abc'中a的后邊b的前邊的這個(gè)位置開始匹配的,
這個(gè)相當(dāng)于/ac/匹配'abc',顯然結(jié)果是false了

(?!exp) 這個(gè)就是說字符出現(xiàn)的位置的右邊不能是exp這個(gè)表達(dá)式。

var str = 'nodejs';
var reg = /node(?!js)/;
console.log(reg.test(str)) // false

(?=exp) 這個(gè)就是說字符出現(xiàn)的位置的前邊是exp這個(gè)表達(dá)式。

var str = '¥998$888';
var reg = /(?=\$)\d+/;
console.log(reg.exec(str)) //888

(?!exp) 這個(gè)就是說字符出現(xiàn)的位置的前邊不能是exp這個(gè)表達(dá)式。

var str = '¥998$888';
var reg = /(?!\$)\d+/;
console.log(reg.exec(str)) //998

最后,來一張思維導(dǎo)圖

圖片如果放大也看不清的話 下載地址
如有錯(cuò)誤歡迎指正!

標(biāo)簽:駐馬店 欽州 中衛(wèi) 黑河 南昌 延邊 臨夏 阜陽

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《js中的正則表達(dá)式入門(大量實(shí)例代碼)》,本文關(guān)鍵詞  中的,正則,表達(dá)式,入門,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《js中的正則表達(dá)式入門(大量實(shí)例代碼)》相關(guān)的同類信息!
  • 本頁收集關(guān)于js中的正則表達(dá)式入門(大量實(shí)例代碼)的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    五月天婷婷在线视频| www.中文字幕| 天天综合网入口| 日韩电影免费观看中文字幕| 国产又黄又猛又粗又爽的视频| 日本电影久久久| 久久国产小视频| 99精品视频在线观看| 97aⅴ精品视频一二三区| 日韩精品中文字幕有码专区| 触手亚洲一区二区三区| 色噜噜一区二区三区| 蜜桃传媒麻豆第一区在线观看| 男女激情无遮挡| 久久艹免费视频| 182午夜视频| 黄色高清无遮挡| www.国产com| 日本成人精品视频| 国产成人在线视频网站| 欧美一区二区不卡视频| 午夜激情在线观看| 精品免费国产一区二区三区四区| 熟女人妇 成熟妇女系列视频| 开心婷婷激情| 97久久久久久久| 精品无码av一区二区三区不卡| 国产精品三上| 黄色亚洲大片免费在线观看| 超碰cao国产精品一区二区| 久草.com| 国产亚洲一级高清| 91午夜精品亚洲一区二区三区| 国产传媒在线观看| 亚洲精品女av网站| 性欧美高清come| 91精品国产高清自在线| 日本女人性生活视频| 高清不卡一区二区三区| 国产精品www网站| 日本在线观看| 久久久精品国产一区二区| 亚洲国产精品福利| 伊人久久精品视频| va亚洲va日韩不卡在线观看| 欧美理论在线| www.成人av.com| 亚洲熟妇无码av在线播放| 久久久久88色偷偷| 亚洲一| 国产成+人+综合+亚洲欧美| 亚洲aaa激情| 成人黄色在线观看| 日韩精品一区二区三区视频在线观看| 欧美日韩免费不卡视频一区二区三区| 黄页视频在线免费观看| 国产精品第100页| 日韩美一区二区| 亚洲天堂av在线| 嫩草影院懂你的影院| 91精品综合久久久久久五月天| 国产aⅴ爽av久久久久成人| 成人黄色在线观看| 一区二区免费av| 波多野结衣在线免费观看| 中文字幕日本三级| 国产免费拔擦拔擦8x高清在线人| 色婷婷亚洲一区二区三区| 久久久久久有精品国产| 欧美激情喷水| 国产视频综合在线| 91成人app| 国产女人在线视频| av毛片午夜不卡高**水| 国外成人免费在线播放| 99久热re在线精彩视频| 久久精品99国产精品酒店日本| 中文字幕一区二区三区日韩精品| 日韩精品一区国产麻豆| 少妇熟女视频一区二区三区| 精品无人码麻豆乱码1区2区| 午夜精品久久久久久久久久久久| 少妇精品视频一区二区免费看| 9i看片成人免费高清| 日本不卡免费高清视频在线| 精品人伦一区二区三电影| 男女视频在线观看| 一区二区三区四区视频| 2018国产在线| 五月婷婷激情五月| 四虎成人精品在永久免费| 久久久999国产精品| 中文人妻av久久人妻18| 国产综合在线观看视频| 黄色片视频在线观看| 亚洲女人av| 日韩精品高清在线| 国产精品视频免费一区二区三区| 日韩美女免费观看| 白白在线精品| 精品国产一区二区三区香蕉沈先生| 欧美亚洲视频在线看网址| 亚洲色欲色欲www在线观看| xvideos亚洲人网站| 日本中文字幕一区| 不卡视频一区二区三区| 97精品人妻一区二区三区香蕉| 日本调教视频在线观看| 国产性生活毛片| av亚洲产国偷v产偷v自拍| 国产乱理伦片a级在线观看| 国产毛片毛片毛片毛片毛片毛片| av网址观看| 精品视频网站| www.欧美精品| 精品欧美一区二区三区在线观看| 秋霞在线视频| 性一交一乱一伧国产女士spa| 视频成人永久免费视频| 日韩亚洲国产精品| 黄色福利视频网站| 亚洲先锋影音| 欧美日韩在线资源| 中文字幕一区二区三区中文字幕| 国产做a爰片久久毛片| 爱福利在线视频| 国产精品久久久精品四季影院| 日韩五码在线观看| 精品国产99久久久久久| 精品国产一区二区三区四区精华| 寂寞护士中文字幕mp4| 97在线精品国自产拍中文| 91蜜桃网址入口| 国产三级电影在线| 91精品视频观看| 中文字幕日本乱码精品影院| 天天看天天色| 中文乱码字幕高清在线观看| 一区二区中文字幕| 成人国内精品久久久久一区| 国产韩国精品一区二区三区| 午夜一区二区三区免费| 成人免费毛片男人用品| 午夜欧美一区二区三区在线播放| 亚洲高清视频一区| 免费亚洲视频| 4444亚洲人成无码网在线观看| xvideos亚洲| 久久青草精品视频免费观看| 日韩字幕在线观看| 韩国精品视频在线观看| 激情av中文字幕| 欧美日韩视频免费在线观看| 天天操天天操天天干| 国产精品久久二区| 国产精品久久久国产盗摄| 亚洲成人最新网站| 毛片中文字幕| 日韩一区二区精品| 欧美电影完整版在线观看| 1区2区3区精品视频| 国产成人在线网站| 在线国产精品播放| 2017欧美狠狠色| 久久久久久久久久久久久国产精品| 好吊的妞视频这里都有| 香蕉视频在线视频| 免费毛片在线不卡| 18aaaa精品欧美大片h| 亚洲欧洲一区二区三区| 欧美日韩在线网站| 一区二区成人国产精品| 国产精品网站在线播放| 国产精品久久久久久久久粉嫩av| 高清免费观看在线| 欧美一区二区久久久| 国产一级精品aaaaa看| 最新理论片影院| h片在线观看下载| 女人被爽到呻吟gif动态图下载| 亚洲av少妇一区二区在线观看| 色偷偷亚洲第一综合| 亚洲熟妇无码av| www.com黄色片| 国产在线观看福利| 国产尤物av一区二区三区| 欧美日韩成人综合在线一区二区| 嫩草影院在线观看未满十八| 欧美大肥婆大肥bbbbb| 国产美女精品在线观看| 国产精品亚洲欧美在线播放| 欧美日韩午夜激情| 不卡视频一二三| www日本高清视频| 亚洲精品国产欧美| 日韩区欧美区| 亚洲自拍偷拍综合| 日韩精品一二三四区| 日日夜夜精品网站| 亚洲 自拍 另类 欧美 丝袜| 国产亚洲在线| 97精品国产福利一区二区三区| 欧美精品与人动性物交免费看| 欧美久久香蕉| 国产日韩第一页| 日韩欧美激情一区二区| 国产成人av电影在线观看| 色婷婷激情一区二区三区| 欧美日韩伦理片| 日本一区二区不卡视频| 国产成人精品福利一区二区三区| 凹凸精品一区二区三区| 18成人在线观看| 99影视tv| 在线观看欧美| 强行糟蹋人妻hd中文| 久久久精品欧美| 麻豆视频成人| 30一40一50老女人毛片| 黄网免费视频| 成人精品久久一区二区三区| 黄色一级大片在线观看| 国产成人在线观看网站| 日韩少妇内射免费播放18禁裸乳| 国产精品黄色影片导航在线观看| 亚洲一区在线直播| 精品国产一区二区三区免费| 狠狠色丁香婷婷综合影院| 国产精品自产拍在线观| 欧美在线制服丝袜| 91麻豆精品视频| 久久经典视频| 午夜视频在线观看一区二区三区| 久久久久亚洲天堂| 91小视频免费看| 无码人妻少妇伦在线电影| 精品福利一区二区三区免费视频| 一区二区三区四区五区| 97人妻精品一区二区三区动漫| 亚洲第一色在线| 天天好比中文综合网| www国产亚洲精品久久麻豆| 黄色精品免费看| 麻豆国产精品777777在线| 日韩福利视频在线观看| 污视频在线观看免费网站| 国产免费无遮挡吸奶头视频| 日韩电影免费观看中文字幕| 中国一区二区视频| www.eeuss影院| 国产人伦精品一区二区| 亚洲在线日韩| 国产成人综合自拍| 国产精品一区二区免费不卡| 亚洲最大av在线| 日本女人性生活视频| 午夜私人影院久久久久| 五月天天在线| www.黄色片| 特黄视频免费观看| 久久91精品| 椎名由奈jux491在线播放| 国产青青草在线| 欧洲亚洲一区二区三区| 成人免费在线一区二区三区| av色综合久久天堂av色综合在| 亚洲色图欧美制服丝袜另类第一页| 亚洲а∨天堂久久精品2021| 色aⅴ色av色av偷拍| 国产精品色哟哟网站| 久久成人精品| 美女脱光内衣内裤视频久久影院| 欧美另类高清videos| 在线免费观看成年人视频| 一区二区高清在线| 99久久综合国产精品二区| 精品一区二区三区免费站| 偷拍欧美精品| 好男人中文字幕官网| 久久国产精品波多野结衣av| 日本一区二区三区dvd视频在线| 亚洲aaaaaaa| 亚洲综合色在线| 国产又粗又猛又爽又黄的视频四季| 日韩欧美国产三级电影视频| 精品国产乱码久久久久久蜜坠欲下| 欧美一区二区影院| 国产不卡视频在线播放| 91老司机在线| 色噜噜狠狠一区二区三区| 波多野结衣 久久| 你懂的免费在线观看视频网站| 日本少妇aaa| 国产精品亚洲天堂| 国产私拍福利精品视频二区| av资源免费观看| 国产精品国三级国产av| 免费影视观看网站入口| 中文字幕视频观看| 伊色综合久久之综合久久| 国产日韩欧美综合| 亚洲精品91在线| 亚洲国产97在线精品一区| 翔田千里精品久久一区二| 中文字幕亚洲一区二区三区五十路| 337p日本欧洲亚洲大胆色噜噜| 在线看的你懂得| 亚洲综合专区| www.在线欧美| 亚洲精品美女免费| 91精品国产综合久久福利| 日韩国产综合| 精品国产精品网麻豆系列| 中文字幕乱码av| 欧美久久精品一级c片| 日本xxxx黄色| 免费看国产曰批40分钟| 超碰在线无需免费| 午夜在线网站| 中文字幕免费在线播放| a级片在线免费| 一区在线视频观看| 26uuu成人网| 探花国产精品| 欧美性生活久久| 中文字幕在线看视频国产欧美| 在线播放第一页| 激情视频网站在线播放色|