亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > regex > 正文

經典JavaScript正則表達式實戰(附pdf)

2020-01-20 22:15:58
字體:
來源:轉載
供稿:網友
關于測試代碼
本文不是使用Dreamweaver編輯,以下測試代碼可能已經在賦值粘貼的過程做了一些調整,可能執行失效??梢詤⒖幢疚牡膒df版本。

匹配結尾的數字

復制代碼 代碼如下:

30CAC0040 取出40
3SFASDF92 取出92

正則如下://d+$/g

統一空格個數

字符串內字符鍵有空格,但是空格的數量可能不一致,通過正則將空格的個數統一變為一個。

例如:藍 色 理 想

變成:藍 色 理 想

aobert的正則:
復制代碼 代碼如下:

<script type="text/javascript">
var str="藍 色 理 想"
var reg=//s+/g
str = str.replace(reg," ")
document.write(str)
</script>

判斷字符串是不是由數字組成
來源:有沒有簡單的方法判斷字符串由數字組成?

這個正則比較簡單,寫了一個測試
復制代碼 代碼如下:

<script type="text/javascript">
function isDigit(str){
var reg = /^/d*$/;
return reg.test(str);
}
var str = "7654321";
document.write(isDigit(str));
var str = "test";
document.write(isDigit(str));
</script>

電話號碼正則

:求一個驗證電話號碼的JS正則
復制代碼 代碼如下:

/^/d{3,4}-/d{7,8}(-/d{3,4})?$/區號必填為3-4位的數字,區號之后用“-”與電話號碼連接

^/d{3,4}-電話號碼為7-8位的數字

/d{7,8}分機號碼為3-4位的數字,非必填,但若填寫則以“-”與電話號碼相連接

(-/d{3,4})?手機號碼正則表達式

正則驗證手機號,忽略前面的0,支持130-139,150-159。忽略前面0之后判斷它是11位的。

cloeft的正則:
復制代碼 代碼如下:

/^0*(13|15)/d{9}$/^0*匹配掉開頭任意數量的0。

武林網發布的手機號碼
復制代碼 代碼如下:

function checkMobile(){
var sMobile = document.mobileform.mobile.value
if(!(/^1[3|4|5|8][0-9]/d{4,8}$/.test(sMobile))){
alert("不是完整的11位手機號或者正確的手機號前七位");
document.mobileform.mobile.focus();
return false;
}
}

由于手機號碼是13任意數字9位,和15任意數字9位,所以可以用(13|15)/d{9}匹配。

測試代碼如下:
復制代碼 代碼如下:

function testReg(reg,str){
return reg.test(str);
}
var reg =/^1[3|4|5|8][0-9]/d{4,8}$/;
var str = '13889294444';
var str2 = '12889293333';
var str3 = '23445567';
document.write(testReg(reg,str)+'<br />');
document.write(testReg(reg,str2)+'<br />');
document.write(testReg(reg,str3)+'<br />');

使用正則表達式實現刪除字符串中的空格:
來源:請問js中有沒有去掉空格的函數

代碼以及測試代碼如下:
復制代碼 代碼如下:

<script type="text/javascript">
//刪除字符串兩側的空白字符。
function trim(str){
return str.replace(/^/s+|/s+$/g,'');
}
//刪除字符串左側的空白字符。
function ltrim(str){
return str.replace(/^/s+/g,'');
}
//刪除字符串右側的空白字符。
function rtrim(str){
return str.replace(//s+$/g,'');
}
//以下為測試代碼
var trimTest = " 123456789 ";
//前后各有一個空格。
document.write('length:'+trimTest.length+'<br />');
//使用前
document.write('ltrim length:'+ltrim(trimTest).length+'<br />');
//使用ltrim后
document.write('rtrim length:'+rtrim(trimTest).length+'<br />');
//使用rtrim后
document.write('trim length:'+trim(trimTest).length+'<br />');
//使用trim后
</script>

測試的結果如下:

length:11
ltrim length:10
rtrim length:10
trim length:9限制文本框只能輸入數字和小數點等等
來源:文本框輸入限制的問題????

只能輸入數字和小數點
復制代碼 代碼如下:

var reg = /^/d*/.?/d{0,2}$/開頭有若干個數字,中間有0個或者一個小數點,結尾有0到2個數字。

只能輸入小寫的英文字母和小數點,和冒號,正反斜杠(:.//)
復制代碼 代碼如下:

var reg = /[a-z/.////:]+/;a-z包括了小寫的英文字母,/.是小數點,//和//分別是左右反斜線,最后是冒號。整個組成一個字符集和代碼任一均可,最后在加上+,1或者多個。

替換小數點前內容為指定內容

請問 怎么把這個字符串的小數點前面的字符替換為我自定義的字符串???
例如:infomarket.php?id=197 替換為 test.php?id=197
應該可以把第一個點“.”之前的所有單詞字符替換為test就可以了。我寫的正則如下:
復制代碼 代碼如下:

<script type="text/javascript">
var str = "infomarket.php?id=197";
var reg = /^/w*/ig;
//匹配字符串開頭的任意個單詞字符
str = str.replace(reg,'test');
document.write(str);
</script>

原帖的有點復雜,沒太看明白。

只匹配中文的正則表達式

前兩天看的《JavaScript開發王》里恰好有中文的unicode范圍,正則如下:

/[/u4E00-/u9FA5/uf900-/ufa2d]/寫了一個簡單的測試,會把所有的中文替換成“哦”。
復制代碼 代碼如下:

<script type="text/javascript">
var str = "有中文?and English.";
var reg = /[/u4E00-/u9FA5/uf900-/ufa2d]/ig;
str = str.replace(reg,'哦');
document.write(str);
</script>

返回字符串的中文字符個數


一般的字符長度對中文和英文都是不分別的 如JS里的length,那么如何返回字符串中中文字符的個數呢?guoshuang老師在原帖中給出了解決方案,我又沒看懂……

不過我自己也想到了一個辦法:先去掉非中文字符,再返回length屬性。函數以及測試代碼如下:
復制代碼 代碼如下:

<script type="text/javascript">
function cLength(str){
var reg = /[^/u4E00-/u9FA5/uf900-/ufa2d]/g;
//匹配非中文的正則表達式
var temp = str.replace(reg,'');
return temp.length;
}
var str = "中文123";
document.write(str.length+'<br />');
document.write(cLength(str));
</script>

結果:

5
2中文兩個,數字三個,正確。

下面的測試也正確。
復制代碼 代碼如下:

var str = "中文123tets@#!#%$#[][{}";
document.write(str.length+'<br />');
document.write(cLength(str));

正則表達式取得匹配IP地址前三段
來源:如何用正則取IP前3段

192.168.118.101,192.168.118.72, 192.168.118.1都替換成:192.168.118

只要匹配掉最后一段并且替換為空字符串就行了,正則如下:

//./d{1,3}$/匹配結尾的.n,.nn或者.nnn。

測試代碼如下:
復制代碼 代碼如下:

function replaceReg(reg,str){
return str.replace(reg,'')
}
var reg = //./d{1,3}$/;
var str = '192.168.118.101';
var str2 = '192.168.118.72';
var str3 = '192.168.118.1';
document.write(replaceReg(reg,str)+'<br />');
document.write(replaceReg(reg,str2)+'<br />');
document.write(replaceReg(reg,str3)+'<br />');

相似的有,這個帖子里有一個驗證IP地址的方法:求檢驗MAC地址的正則表達例子

匹配<ul>與<ul>之間的內容
<ul>safsf<ul>safsf</ul><ul>safsf</ul></ul>

用正則可以得到 <ul>起到下個<ul> 之間的內容。

正則如下:
復制代碼 代碼如下:

/<ul>[/s/S]+?<ul>/i

首先匹配兩側的ul標簽,中間的[/s/S]+?可以匹配一個或者多個任意字符,一定要非貪婪,否則會匹配<ul>safsf<ul>safsf</ul><ul>。

用正則表達式獲得文件名

c:/images/tupian/006.jpg

可能是直接在盤符根目錄下,也可能在好幾層目錄下,要求替換到只剩文件名。

xlez的正則如下:
復制代碼 代碼如下:

/[^////]*[////]+/g

首先匹配非左右斜線字符0或多個,然后是左右斜線一個或者多個。形如“xxx/”或者“xxx/”或者“/”或者“/”

函數以及測試代碼:
復制代碼 代碼如下:

<script type="text/javascript">
function getFileName(str){
var reg = /[^////]*[////]+/g;
//xxx/或者是xxx/
str = str.replace(reg,'');
return str;
}
var str = "c://images//tupian//006.jpg";
document.write(getFileName(str)+'<br />');
var str2 = "c:/images/tupian/test2.jpg";
document.write(getFileName(str2));
</script>

注意,/需要轉義。

絕對路徑變相對路徑
來源:討論一個正則

將<IMG height="120" width="800" src="http://23.123.22.12/image/somepic.gif">轉換為:<IMG height="120" width="800" src="/image/somepic.gif">。

其中網址可能改變,例如http://localhost等等。

cloudchen的正則:

/http:////[^//]+/首先是http://,然后[^//]+找過1個或者多個非/字符,因為遇到第一個/表示已經到目錄了,停止匹配。

測試代碼如下:
復制代碼 代碼如下:

<script type="text/javascript">
var str = '<IMG height="120" width="800" /
src="http://23.123.22.12/image/somepic.gif">';
var reg = /http:////[^//]+/;
str = str.replace(reg,"");
alert(str)
</script>

用戶名正則

用于用戶名注冊,,用戶名只 能用 中文、英文、數字、下劃線、4-16個字符。

hansir和解決方案弄成正則:
復制代碼 代碼如下:

/^[/u4E00-/u9FA5/uf900-/ufa2d/w]{4,16}$/

中文字符或者單詞字符,4到16個。實現4到16結成到正則里的關鍵就是開始^和結束$,這就等于整個字符串只能有這些匹配的內容,不能有多余的。

函數和測試代碼如下:
復制代碼 代碼如下:

<script type="text/javascript">
function isEmail(str){
var reg = /^[/u4E00-/u9FA5/uf900-/ufa2d/w]{4,16}$/;
return reg.test(str);
}
var str = '超級無敵用戶名regExp';
var str2 = '搗亂的@';
var str3 = '太短'
var str4 = '太長longlonglonglonglonglonglonglong'
document.write(isEmail(str)+'<br />');
document.write(isEmail(str2)+'<br />');
document.write(isEmail(str3)+'<br />');
document.write(isEmail(str4)+'<br />');
</script>

匹配英文地址
來源:-求助- 正則問題

規則如下:
包含 "點", "字母","空格","逗號","數字",但開頭和結尾不能是除字母外任何字符。

[/.a-zA-Z/s,0-9]這個字符集就實現了字母,空格,逗號和數字。最終正則如下:

/^[a-zA-Z][/.a-zA-Z/s,0-9]*?[a-zA-Z]+$/
開頭必須有字母,結束也必須是一個以上字母。測試代碼如下:
復制代碼 代碼如下:

<script type="text/javascript">
function testReg(reg,str){
return reg.test(str);
}
var reg = /^[a-zA-Z][/.a-zA-Z/s,0-9]*?[a-zA-Z]+$/;
var str = 'No.8,ChangAn Street,BeiJing,China';
var str2 = '8.No,ChangAn Street,BeiJing,China';
var str3 = 'No.8,ChangAn Street,BeiJing,China88';
document.write(testReg(reg,str)+'<br />')
document.write(testReg(reg,str2)+'<br />')
document.write(testReg(reg,str3)+'<br />')
</script>

正則匹配價格

價格的格式應該如下:

開頭數字若干位,可能有一個小數點,小數點后面可以有兩位數字。hansir給出的對應正則如下:

/^(/d*/./d{0,2}|/d+).*$/
hansir給出的測試代碼如下:
復制代碼 代碼如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>無標題文檔</title>
<script type="text/javascript">
function checkPrice(me){
if(!(/^(?:/d+|/d+/./d{0,2})$/.test(me.value))){
me.value = me.value.replace(/^(/d*/./d{0,2}|/d+).*$/,'$1');
}
}
</script>
</head>
<body>
<input type="text" onkeyup="checkPrice(this);"/>
</body>
</html>

身份證號碼的匹配
來源:關于正則的,大家幫幫忙,急,在線等

身份證號碼可以是15位或者是18位,其中最后一位可以是X。其它全是數字,正則如下:

/^(/d{14}|/d{17})(/d|[xX])$/開頭是14位或者17位數字,結尾可以是數字或者是x或者是X。

測試代碼如下:
復制代碼 代碼如下:

<script type="text/javascript">
function testReg(reg,str){
return reg.test(str);
}
var reg = /^(/d{14}|/d{17})(/d|[xX])$/;
var str = '123456789012345';//15位
var str2 = '123456789012345678';//18位
var str3 = '12345678901234567X';//最后一位是X
var str4 = '1234';//位數不對
document.write(testReg(reg,str)+'<br />');
document.write(testReg(reg,str2)+'<br />');
document.write(testReg(reg,str3)+'<br />');
document.write(testReg(reg,str4)+'<br />');
</script>

要求文本有指定行數

匹配至少兩行的字符串,每行都為非空字符。

只要匹配到[/n/r]就表示有換行了,再保證換行的兩段都不是空字符就可以了。正則如下:

//S+?[/n/r]/S+?/i
這個正則的應用應該是用在textarea里,如果是如下要求:可以支持所有字符,中間可帶空格,可以包括英文、數字、中文、標點

這樣的話,只要針對空格再改一下就行了。(按照非空的要求,上面有不能匹配“字符+空格+換行+字符”的字符串)。修改如下:

//S+?/s*?[/n/r]/s*?/S+?/i
單詞首字母大寫
來源:求個正則,處理英文單詞或詞組的

每單詞首字大寫,其他小寫。如blue idea轉換為Blue Idea,BLUE IDEA也轉換為Blue Idea

cloeft的正則:
復制代碼 代碼如下:

//b(/w)|/s(/w)/g

所謂“首字母”包括兩種情況:第一種是邊界(開頭)的單詞字符,一種是空格之后的新單詞的第一個字母。測試代碼如下:
復制代碼 代碼如下:

<script type="text/javascript">
function replaceReg(reg,str){
str = str.toLowerCase();
return str.replace(reg,function(m){return m.toUpperCase()})
}
var reg = //b(/w)|/s(/w)/g;
var str = 'blue idea';
var str2 = 'BLUE IDEA';
var str3 = 'Test /n str is no good!';
var str4 = 'final test';
document.write(replaceReg(reg,str)+'<br />');
document.write(replaceReg(reg,str2)+'<br />');
document.write(replaceReg(reg,str3)+'<br />');
document.write(replaceReg(reg,str4)+'<br />');
</script>

正則驗證日期格式

yyyy-mm-dd格式

正則如下:
復制代碼 代碼如下:

/^/d{4}-/d{1,2}-/d{1,2}$/

4位數字,橫線,1或者2位數字,再橫線,最后又是1或者2位數字。

測試代碼如下:
復制代碼 代碼如下:

<script type="text/javascript">
function testReg(reg,str){
return reg.test(str);
}
var reg = /^/d{4}-/d{1,2}-/d{1,2}$/;
var str = '2008-8-8';
var str2 = '2008-08-08';
var str3 = '08-08-2008';
var str4 = '2008 08 08';
document.write(testReg(reg,str)+'<br />');
document.write(testReg(reg,str2)+'<br />');
document.write(testReg(reg,str3)+'<br />');
document.write(testReg(reg,str4)+'<br />');
</script>

第二種格式:來源:求一正則表達式
yyyy-mm-dd

yyyy/mm/dd

用“或”簡單地修改一下就行了。

/^/d{4}(-|//)/d{1,2}(-|//)/d{1,2}$/去掉文件的后綴名
來源:求一個正則

www.abc.com/dc/fda.asp變為www.abc.com/dc/fda

如果文件后綴已知的話這個問題就非常簡單了,正則如下:

//.asp$/匹配最后的.asp而已,測試代碼如下:
復制代碼 代碼如下:

<script type="text/javascript">
function delAspExtension(str){
var reg = //.asp$/;
return str.replace(reg,'');
}
var str = 'www.abc.com/dc/fda.asp';
document.write(delAspExtension(str)+'<br />');
</script>

如果文件名未知的話就用這個正則://./w+$/,測試代碼如下:
復制代碼 代碼如下:

<script type="text/javascript">
function delExtension(str){
var reg = //./w+$/;
return str.replace(reg,'');
}
var str = 'example.com/dc/fda.asp';
document.write(delExtension(str)+'<br />');
var str2 = 'test/regular/fda.do';
document.write(delExtension(str2)+'<br />');
var str3 = 'example.com/dc/fda.strange_extension';
document.write(delExtension(str3)+'<br />');
</script>

驗證郵箱的正則表達式
來源:找javascript寫的表單檢查代碼!

fuchangxi的正則:

/^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(/.[a-zA-Z0-9_-])+/開始必須是一個或者多個單詞字符或者是-,加上@,然后又是一個或者多個單詞字符或者是-。然后是點“.”和單詞字符和-的組合,可以有一個或者多個組合。
復制代碼 代碼如下:

<script type="text/javascript">
function isEmail(str){
var reg = /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(/.[a-zA-Z0-9_-])+/;
return reg.test(str);
}
var str = 'test@hotmail.com';
document.write(isEmail(str)+'<br />');
var str2 = 'test@sima.vip.com';
document.write(isEmail(str2)+'<br />');
var str3 = 'te-st@qq.com.cn';
document.write(isEmail(str3)+'<br />');
var str4 = 'te_st@sima.vip.com';
document.write(isEmail(str4)+'<br />');
var str5 = 'te.._st@sima.vip.com';
document.write(isEmail(str5)+'<br />');
</script>

我不太了解郵箱的具體規則。感覺這個正則比較簡單,EMAIL校驗 正則 討論 求解里有比較詳細的郵箱正則討論。

匹配源代碼中的鏈接
來源:正則

能夠匹配HTML代碼中鏈接的正則。

原帖正則:

/<a href=".+?">.+?<//a>/g感覺有點嚴格,首先要<a href="".+?">有,而且href屬性可以是一個或者多個除換行外任意字符(非貪婪)。后面是.+?<//a>,一個或者多個除換行外任意字符(非貪婪),再加上結束標簽。

有個問題,如果a的起始標簽最后有空格,或者除了href還有其它屬性的話,上面的正則就不能匹配這個鏈接了。

例如:

<a href="asdfs" >……多了個空格。

<a id="xx" href=""asdfs">……前面有屬性。

……

重寫正則:

/<a/s(/s*/w*?=".+?")*(/s*href=".+?")(/s*/w*?=".+?")*/s*>[/s/S]*?<//a>/
思路如下:首先要有<a和一個空格。/<a/s/

第一個(/s*/w*?=".+?")*

可以匹配一個屬性,屬性前面可能有或者沒有多余的空格,用/s*匹配;屬性名肯定是單詞字符,用/w*?匹配;=".+?"就是匹配屬性值了非換行字符若干個;整個括號外面加個*表示可能有任意多個屬性。

(/s*href=".+?")

匹配href,它也是一個屬性,所以只要把上面子正則表達式中的/w修改為href=就行了。

(/s*/w*?=".+?")*重復第一個子正則表達式,再次接受任意個屬性。

/s*>,屬性最后再加上若干個空格和>。

[/s/S]*?,鏈接的文字,可能有任何字符組成,若干個,非貪婪。

<//a>最后是結束標簽。

補充:屬性名和=之間,以及=和屬性值之間也可能有空格。所以要再加上幾個/s*。

最后的實例代碼如下:
復制代碼 代碼如下:

<script type="text/javascript">
function findLinks(str){
var reg = /<a/s(/s*/w*?/s*=/s*".+?")*(/s*href/s*=/s*".+?")(/s*/w*?/s*=/s*".+?")
*/s*>[/s/S]*?<//a>/g;
var arr = str.match(reg);
for(var i=0;i<arr.length;i++){
//alert(arr[i]);
document.write('link:'+arr[i]+'<br />');
}
}
var str = '<p>測試鏈接:<a id = "test" title="無敵">經典論壇
</a></p><a? ? >藍色理想</a>';
var arr = findLinks(str);
</script>

會把所有的鏈接在頁面直接顯示出來。注意,

本帖遺留問題:如何執行從右到左的匹配。貌似JS或者VBS沒有提供這個功能2、JS或者VBS不支持 后行斷言。。用什么方法實現這個功能。

匹配鏈接的文字
來源:求一正則?

代碼:<a href="#>這里要保存</a>,只保存鏈接的文本內容,標簽信息刪掉。

前面寫過一個匹配鏈接的正則:

/<a/s(/s*/w*?=".+?")*(/s*href=".+?")(/s*/w*?=".+?")*/s*>[/s/S]*?<//a>/

不過我們需要捕獲的是文字內容,所以需要做一定的修改。第一步就是在所有的括號內都加上?:表示不捕獲。第二步就是再多加一個括號放在[/s/S]*?兩側,這樣就可以捕獲到鏈接的文字內容了。最后正則如下:

/<a/s(?:/s*/w*?/s*=/s*".+?")*(?:/s*href/s*=/s*".+?")(?:/s*/w*?/s*=/s*".+?")*/s*>([/s/S]*?)<//a>/測試代碼如下:
復制代碼 代碼如下:

<script type="text/javascript">
function anchorText(str){
var reg =/<a/s(?:/s*/w*?/s*=/s*".+?")*(?:/s*href/s*=/s*".+?")(?:/s*/w*?/s*=/s*".+?")*/s*>

([/s/S]*?)<//a>/;
str = str.replace(reg,'$1');
return str;
}
var str = '<a id = "test" title="無敵">經典論壇</a>';
document.write(anchorText(str));
</script>

正則判斷標簽是否閉合
來源:求助 超難!正則表達式如何判斷一個標簽是否閉合

例如:<img xxx=”xxx” 就是沒有閉合的標簽;

<p>p的內容,同樣也是沒閉合的標簽。

從簡單的正則開始,先匹配起始標簽

/<[a-z]+/i再加上若干屬性:

/<[a-z]+(/s*/w*?/s*=/s*".+?")*/i
下面就到關鍵點了,標簽的閉合。標簽可能有兩種方式閉合,<img xxx=”xxx” />

或者是<p>xxx </p>。

(/s*//>)

匹配img類的結束,即/>。

(/s*?>[/s/S]*?<///1>)

匹配/p類標簽的結束標簽。>是其實標簽末尾,之后是標簽內容若干個任意字符,最后的<///1>就是結束標簽了。

加上一個或就可以解決了,最后的完整正則表達式:

整個正則:

/<([a-z]+)(/s*/w*?/s*=/s*".+?")*(/s*?>[/s/S]*?<///1>|/s*//>)/i
拿這個正則,只要匹配到了就表示閉合,沒匹配到則沒有閉合。不過沒有考慮相同標簽嵌套的問題,例如

<div>aaaaaa<div>test</div>

也被判斷為合格,可以通過把最后的匹配p類結束標簽寫成子正則表達式,并且更改為非貪心,然后在匹配結果中檢查是否成對。正則如下:

/<([a-z]+)(/s*/w*?/s*=/s*".+?")*(/s*?>[/s/S]*?(<///1>)+|/s*//>)/i
用正則獲得指定標簽的內容
來源:求一正則

有如下代碼:
復制代碼 代碼如下:

<channel>
<title>藍色理想</title>
</channel>
<item>
<title>界面設計測試規范</title>
</item>
<item>
<title>《古典寫實美女》漫畫教程</title>
</item>
<item>
<title>安遠亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品久在线观看| 久久夜精品va视频免费观看| 欧美xxxwww| 2025国产精品视频| 亚洲无av在线中文字幕| 亚洲日本成人女熟在线观看| 色偷偷噜噜噜亚洲男人的天堂| 亚洲加勒比久久88色综合| 国产免费一区二区三区香蕉精| 成人国产精品久久久久久亚洲| 色爱精品视频一区| 5566成人精品视频免费| 精品偷拍一区二区三区在线看| 欧美成年人在线观看| 久久九九热免费视频| 日本一区二区三区四区视频| 欧美日韩美女视频| 日韩av免费在线| 中文字幕精品av| 欧洲成人免费视频| 久久人人爽人人爽人人片亚洲| 91免费看片网站| 久久精品最新地址| 91精品国产高清久久久久久| 日韩欧美黄色动漫| 国产精品视频色| 欧美日韩亚洲91| 欧美激情亚洲另类| 欧美综合一区第一页| 日本精品久久久久影院| 成人黄色免费网站在线观看| 久久综合伊人77777蜜臀| 国产一区二区色| 日韩成人激情影院| 日韩电影在线观看免费| 成人欧美一区二区三区黑人孕妇| 欧美肥老太性生活视频| 亚洲成人网在线观看| 欧美福利在线观看| 欧美最顶级的aⅴ艳星| 国产日韩欧美在线视频观看| 亚洲视频网站在线观看| 午夜精品久久久久久99热| 亚洲国产美女久久久久| 色偷偷88888欧美精品久久久| 成人做爽爽免费视频| 欧美中文字幕在线| 中文字幕日韩av| 久久亚洲精品视频| 久久天天躁狠狠躁夜夜爽蜜月| 日韩av综合中文字幕| 久久综合88中文色鬼| 欧美成在线视频| 国外成人在线播放| 日韩精品视频中文在线观看| 国产午夜精品全部视频在线播放| 久久精品免费电影| 亚洲精品国产精品国自产观看浪潮| 亚洲国产97在线精品一区| 成人免费xxxxx在线观看| 久久精品小视频| 久久久精品2019中文字幕神马| 国产精品久久久久影院日本| 亚洲男子天堂网| 午夜精品99久久免费| 欧美丰满片xxx777| 欧美成aaa人片免费看| 亚洲国产精品人久久电影| 欧美日韩国产成人在线观看| 久久久综合免费视频| 欧美大全免费观看电视剧大泉洋| 国产欧美一区二区三区四区| 亚洲图片制服诱惑| 久久免费高清视频| 中文.日本.精品| 日韩精品视频在线免费观看| 欧美亚洲一区在线| 欧美日韩在线视频一区二区| 中文字幕国产精品| 国产精品一香蕉国产线看观看| 欧美激情二区三区| 精品亚洲一区二区三区四区五区| 亚洲最大的av网站| 亚洲精品日韩欧美| 国产精品亚洲аv天堂网| 日韩一中文字幕| 亚洲精品国产精品乱码不99按摩| 欧美午夜激情在线| 久久国产一区二区三区| 在线播放国产精品| 成人在线免费观看视视频| 国产精品第三页| 亚洲成人1234| 国产精品精品国产| 97在线看免费观看视频在线观看| 成人羞羞国产免费| 成人免费高清完整版在线观看| 美女久久久久久久久久久| 成人高h视频在线| 日韩精品在线观看一区二区| 精品久久中文字幕久久av| 欧美黑人xxxx| 成人黄色影片在线| 国产精品美腿一区在线看| 亚洲最新在线视频| 日本高清+成人网在线观看| 欧美激情手机在线视频| 97在线精品国自产拍中文| 欧美精品亚州精品| 国产精品九九久久久久久久| 91精品视频专区| 久久久久久久久久婷婷| 亚洲视频777| 精品久久久久久久久中文字幕| 在线观看免费高清视频97| 亚洲国产精品人久久电影| 成人黄色在线免费| 亚洲精品日韩av| 久久亚洲精品一区二区| 国产在线播放91| 美女少妇精品视频| 92国产精品久久久久首页| 2020久久国产精品| 性色av一区二区三区在线观看| 欧美一级bbbbb性bbbb喷潮片| 欧美一级大胆视频| 中文国产亚洲喷潮| 亚洲日本成人女熟在线观看| 国产精品盗摄久久久| 欧美日韩国产精品一区二区三区四区| 日韩人体视频一二区| 欧美一乱一性一交一视频| 伊人伊人伊人久久| 九九热精品视频在线播放| 亚洲成avwww人| 一区二区三区在线播放欧美| 日韩av免费看| 国产aaa精品| 青草青草久热精品视频在线观看| 不卡av在线播放| 日韩av免费在线播放| 久久久亚洲影院你懂的| 尤物yw午夜国产精品视频| 青草青草久热精品视频在线观看| 91国内揄拍国内精品对白| 久久视频在线视频| 久久久成人精品视频| 精品久久久一区二区| 久久av红桃一区二区小说| 久久久久久亚洲精品不卡| 日韩一区二区精品视频| 亚洲最大成人在线| 亚洲一区二区三区乱码aⅴ| 精品女厕一区二区三区| 精品成人69xx.xyz| 性色av一区二区三区红粉影视| 国产精品视频xxx| 欧美巨猛xxxx猛交黑人97人| 日韩乱码在线视频| 91精品国产91久久久久久吃药| 中文字幕日韩欧美精品在线观看| 国产在线观看一区二区三区| www.99久久热国产日韩欧美.com| 国产日韩在线亚洲字幕中文|