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

首頁 > 編程 > PHP > 正文

php正則的內容總結(詳細)

2020-03-22 17:36:22
字體:
來源:轉載
供稿:網友
本篇文章給大家帶來的內容是關于php正則的內容總結(詳細),有一定的參考價值,有需要的朋友可以參考一下,希望對你有所幫助。

1.正則基礎知識

行定位符(^與$)

行定位符是用來描述字符串的邊界?!?”表示行結尾“^”表示行開始如 ^de ,表示以de開頭的字符串 de$ ,表示以de結尾的字符串。

單詞定界符

我們在查找的一個單詞的時候,如an是否在一個字符串”gril and body”中存在,很明顯如果匹配的話,an肯定是可以匹配字符串“gril and body”匹配到,怎樣才能讓其匹配單詞,而不是單詞的一部分呢?這時候,我們可以是喲個單詞定界符/b。
/ban/b 去匹配”gril and body”的話,就會提示匹配不到。
當然還有一個大寫的/B,它的意思,和/b正好相反,它匹配的字符串不能使一個完整的單詞,而是其他單詞或字符串中的一部分。如/Ban/B。

選擇字符(|) ,表示或

選擇字符表示或的意思。如Aa|aA,表示Aa或者是aA的意思。注意使用”[]”與”|”的區別,在于”[]”只能匹配單個字符,而”|”可以匹配任意長度的字符串。在使用”[]”的時候,往往配合連接字符”-“一起使用,如[a-d],代表a或b或c或d。

排除字符,排除操作

html' target='_blank'>正則表達式提供了”^”來表示排除不符合的字符,^一般放在[]中。如[^1-5],該字符不是1~5之間的數字。

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

限定符主要是用來限定每個字符串出現的次數。

限定字符 零次或一次 零次或多次 一次或多次 {n,} 至少n次 {n,m} n到m次

如(D+)表示一個或多個D

點號操作符

匹配任意一個字符(不包含換行符)

表達式中的反斜杠(/)

表達式中的反斜杠有多重意義,如轉義、指定預定義的字符集、定義斷言、顯示不打印的字符。

轉義字符

轉義字符主要是將一些特殊字符轉為普通字符。而這些常用特殊字符有”.”,”?”、”/”等。

指定預定義的字符集

字符 任意一個十進制數字[0-9] 任意一個非十進制數字 任意一個空白字符(空格、換行符、換頁符、回車符、字表符) 任意一個非空白字符 任意一個單詞字符 任意個非單詞字符

###顯示不可打印的字符

字符

括號字符()

在正則表達式中小括號的作用主要有:

改變限定符如(|、* 、^)的作用范圍
如(my|your)baby,如果沒有”()”,|將匹配的是要么是my,要么是yourbaby,有了小括號,匹配的就是mybaby或yourbaby。

進行分組,便于反向引用

模式修飾符

模式修飾符的作用是設定模式,也就是正則表達式如何解釋。php中主要模式如下表:

修飾符 忽略大小寫 多文本模式 單行文本模式

x

忽略空白字符

U 懶惰模式 (不寫默認貪婪模式)

2.常用php正則函數及示例

a. preg_grep() 函數

preg_grep 函數用于返回匹配模式的數組條目。

語法
array preg_grep ( string $pattern , array $input [, int $flags = 0 ] )

返回給定數組 input 中與模式 pattern 匹配的元素組成的數組。

參數說明:

$pattern:要搜索的模式,字符串形式。

$input:輸入的數組。

$flags:如果設置為 PREG_GREP_INVERT,這個函數返回輸入數組中與給定模式 pattern 不匹配的元素組成的數組。

實例

返回數組中指定匹配的元素:

 ?php$array = array(1, 2, 3.4, 53, 7.9);// 返回所有包含浮點數的元素$fl_array = preg_grep( /^(/d+)?/./d+$/ , $array);print_r($fl_array);? 

執行結果如下所示:

Array [2] = 3.4 [4] = 7.9)

可以看出 preg_grep 只返回了數組中的浮點數。

b.preg_match() 函數

PHP 正則表達式(PCRE)

preg_last_error 函數用于執行一個正則表達式匹配。

語法
int preg_match ( string $pattern , string $subject [, array $matches [, int $flags = 0 [, int $offset = 0 ]]] )

搜索 subject 與 pattern 給定的正則表達式的一個匹配。

參數說明:

$pattern: 要搜索的模式,字符串形式。

$subject: 輸入字符串。

$matches: 如果提供了參數matches,它將被填充為搜索結果。 $matches[0]將包含完整模式匹配到的文本, $matches[1] 將包含第一個捕獲子組匹配到的文本,以此類推。

$flags:flags 可以被設置為以下標記值:

PREG_OFFSET_CAPTURE: 如果傳遞了這個標記,對于每一個出現的匹配返回時會附加字符串偏移量(相對于目標字符串的)。 注意:這會改變填充到matches參數的數組,使其每個元素成為一個由 第0個元素是匹配到的字符串,第1個元素是該匹配字符串 在目標字符串subject中的偏移量。

offset: 通常,搜索從目標字符串的開始位置開始??蛇x參數 offset 用于 指定從目標字符串的某個未知開始搜索(單位是字節)。

返回值

返回 pattern 的匹配次數。 它的值將是 0 次(不匹配)或 1 次,因為 preg_match() 在第一次匹配后 將會停止搜索。preg_match_all() 不同于此,它會一直搜索subject 直到到達結尾。 如果發生錯誤preg_match()返回 FALSE。

實例查找文本字符串 php :
 ?php//模式分隔符后的 i 標記這是一個大小寫不敏感的搜索if (preg_match( /php/i , PHP is the web scripting language of choice. ))echo 查找到匹配的字符串 php。 } else {echo 未發現匹配的字符串 php。 } ? 

執行結果如下所示:

查找到匹配的字符串 php。
查找單詞 word
 ?php/* 模式中的/b標記一個單詞邊界,所以只有獨立的單詞 web 會被匹配,而不會匹配 * 單詞的部分內容比如 webbing 或 cobweb */if (preg_match( //bweb/b/i , PHP is the web scripting language of choice. )) {echo 查找到匹配的字符串。/n } else {echo 未發現匹配的字符串。/n if (preg_match( //bweb/b/i , PHP is the website scripting language of choice. )) {echo 查找到匹配的字符串。/n } else {echo 未發現匹配的字符串。/n } ? 

執行結果如下所示:

查找到匹配的字符串。未發現匹配的字符串。
獲取 URL 中的域名
 ?php// 從URL中獲取主機名稱preg_match( @^(?:http://)?([^/]+)@i , http://www.runoob.com/index.html , $matches);$host = $matches[1];// 獲取主機名稱的后面兩部分preg_match( /[^.]+/.[^.]+$/ , $host, $matches);echo domain name is: {$matches[0]}/n ? 

執行結果如下所示:

domain name is: runoob.com
c.preg_match_all() 函數

PHP 正則表達式(PCRE)

preg_match_all 函數用于執行一個全局正則表達式匹配。

語法
int preg_match_all ( string $pattern , string $subject [, array $matches [, int $flags = PREG_PATTERN_ORDER [, int $offset = 0 ]]] )

搜索 subject 中所有匹配 pattern 給定正則表達式的匹配結果并且將它們以 flag 指定順序輸出到 matches 中。

在第一個匹配找到后, 子序列繼續從最后一次匹配位置搜索。

參數說明:

$pattern: 要搜索的模式,字符串形式。

$subject: 輸入字符串

$matches: 多維數組,作為輸出參數輸出所有匹配結果, 數組排序通過flags指定。

$flags:可以結合下面標記使用(注意不能同時使用PREG_PATTERN_ORDER和 PREG_SET_ORDER):

PREG_PATTERN_ORDER: 結果排序為$matches[0]保存完整模式的所有匹配, $matches[1] 保存第一個子組的所有匹配,以此類推。

PREG_SET_ORDER: 結果排序為$matches[0]包含第一次匹配得到的所有匹配(包含子組), $matches[1]是包含第二次匹配到的所有匹配(包含子組)的數組,以此類推。

PREG_OFFSET_CAPTURE: 如果這個標記被傳遞,每個發現的匹配返回時會增加它相對目標字符串的偏移量。

offset: 通常, 查找時從目標字符串的開始位置開始??蛇x參數offset用于 從目標字符串中指定位置開始搜索(單位是字節)。

返回值

返回完整匹配次數(可能是0),或者如果發生錯誤返回FALSE。

實例查找匹配 b 與 /b 標簽的內容:(自己常用獲取$pat_array[1])
 ?php$userinfo = Name: b PHP /b br Title: b Programming Language /b preg_match_all ( / b (.*) //b /U , $userinfo, $pat_array);print_r($pat_array[0]);? 

執行結果如下所示:

Array [0] = b PHP /b  [1] = b Programming Language /b )
d. preg_replace() 函數

preg_replace 函數執行一個正則表達式的搜索和替換。

語法
mixed preg_replace ( mixed $pattern , mixed $replacement , mixed $subject [, int $limit = -1 [, int $count ]] )

搜索 subject 中匹配 pattern 的部分, 以 replacement 進行替換。

參數說明:

$pattern: 要搜索的模式,可以是字符串或一個字符串數組。

$replacement: 用于替換的字符串或字符串數組。

$subject: 要搜索替換的目標字符串或字符串數組。

$limit: 可選,對于每個模式用于每個 subject 字符串的最大可替換次數。 默認是-1(無限制)。

$count: 可選,為替換執行的次數。(用于統計被替換的次數)

返回值

如果 subject 是一個數組, preg_replace() 返回一個數組, 其他情況下返回一個字符串。

如果匹配被查找到,替換后的 subject 被返回,其他情況下 返回沒有改變的 subject。如果發生錯誤,返回 NULL。

實例將 google 替換為 runoob
 ?php$string = google 123, 456 $pattern = /(/w+) (/d+), (/d+)/i $replacement = runoob ${2},$3 echo preg_replace($pattern, $replacement, $string);? 

執行結果如下所示:

runoob 123,456
刪除空格字符
 ?php$str = runo o b $str = preg_replace( //s+/ , , $str);// 將會改變為 runoob echo $str;? 

執行結果如下所示:

runoob
使用基于數組索引的搜索替換
 ?php$string = The quick brown fox jumped over the lazy dog. $patterns = array();$patterns[0] = /quick/ $patterns[1] = /brown/ $patterns[2] = /fox/ $replacements = array();$replacements[2] = bear $replacements[1] = black $replacements[0] = slow echo preg_replace($patterns, $replacements, $string);? 

執行結果如下所示:

The bear black slow jumped over the lazy dog.
使用參數 count
 ?php$count = 0;echo preg_replace(array( //d/ , //s/ ), * , xp 4 to , -1 , $count);echo $count; //3? 

執行結果如下所示:

xp***to3
e.preg_split() 函數

preg_replace 函數通過一個正則表達式分隔字符串。

語法
array preg_split ( string $pattern , string $subject [, int $limit = -1 [, int $flags = 0 ]] )

通過一個正則表達式分隔給定字符串。

參數說明:

$pattern: 用于搜索的模式,字符串形式。

$subject: 輸入字符串。

$limit: 可選,如果指定,將限制分隔得到的子串最多只有limit個,返回的最后一個 子串將包含所有剩余部分。limit值為-1, 0或null時都代表 不限制 , 作為php的標準,你可以使用null跳過對flags的設置。

$flags: 可選,可以是任何下面標記的組合(以位或運算 | 組合):

PREG_SPLIT_NO_EMPTY: 如果這個標記被設置, preg_split() 將進返回分隔后的非空部分。

PREG_SPLIT_DELIM_CAPTURE: 如果這個標記設置了,用于分隔的模式中的括號表達式將被捕獲并返回。

PREG_SPLIT_OFFSET_CAPTURE: 如果這個標記被設置, 對于每一個出現的匹配返回時將會附加字符串偏移量. 注意:這將會改變返回數組中的每一個元素, 使其每個元素成為一個由第0 個元素為分隔后的子串,第1個元素為該子串在subject 中的偏移量組成的數組。

返回值

返回一個使用 pattern 邊界分隔 subject 后得到的子串組成的數組。

實例獲取搜索字符串的部分
 ?php//使用逗號或空格(包含 , /r, /t, /n, /f)分隔短語$keywords = preg_split( /[/s,]+/ , hypertext language, programming print_r($keywords);? 

執行結果如下所示:

Array [0] = hypertext [1] = language [2] = programming)
將一個字符串分隔為組成它的字符
 ?php$str = runoob $chars = preg_split( // , $str, -1, PREG_SPLIT_NO_EMPTY);print_r($chars);? 

執行結果如下所示:

Array [0] = r [1] = u [2] = n [3] = o [4] = o [5] = b)
分隔一個字符串并獲取每部分的偏移量
 ?php$str = hypertext language programming $chars = preg_split( / / , $str, -1, PREG_SPLIT_OFFSET_CAPTURE);print_r($chars);? 

執行結果如下所示:

Array [0] = Array [0] = hypertext [1] = 0 [1] = Array [0] = language [1] = 10 [2] = Array [0] = programming [1] = 19)
3.常用正則(參考作用)

一、校驗數字的表達式

1 數字:
^[0-9]*$
2 n位的數字:
^/d{n}$
3 至少n位的數字:
^/d{n,}$
4 m-n位的數字:
^/d{m,n}$
5 零和非零開頭的數字:
^(0|[1-9][0-9]*)$
6 非零開頭的最多帶兩位小數的數字:
^([1-9][0-9]*)+(.[0-9]{1,2})?$
7 帶1-2位小數的正數或負數:
^(/-)?/d+(/./d{1,2})?$
8 正數、負數、和小數:
^(/-|/+)?/d+(/./d+)?$
9 有兩位小數的正實數:
^[0-9]+(.[0-9]{2})?$
10 有1~3位小數的正實數:
^[0-9]+(.[0-9]{1,3})?$
11 非零的正整數:
^[1-9]/d*$ 或 ^([1-9][0-9]*){1,3}$ 或 ^/+?[1-9][0-9]*$
12 非零的負整數:
^/-[1-9][]0-9 *$ 或 ^-[1-9]/d*$
13 非負整數:
^/d+$ 或 ^[1-9]/d*|0$
14 非正整數:
^-[1-9]/d*|0$ 或 ^((-/d+)|(0+))$
15 非負浮點數:
^/d+(/./d+)?$ 或 ^[1-9]/d*/./d*|0/./d*[1-9]/d*|0?/.0+|0$
16 非正浮點數:
^((-/d+(/./d+)?)|(0+(/.0+)?))$ 或 ^(-([1-9]/d*/./d*|0/./d*[1-9]/d*))|0?/.0+|0$
17 正浮點數:
^[1-9]/d*/./d*|0/./d*[1-9]/d*$ 或 ^(([0-9]+/.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*/.[0-9]+)|([0-9]*[1-9][0-9]*))$
18 負浮點數:
^-([1-9]/d*/./d*|0/./d*[1-9]/d*)$ 或 ^(-(([0-9]+/.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*/.[0-9]+)|([0-9]*[1-9][0-9]*)))$
19 浮點數:
^(-?/d+)(/./d+)?$ 或 ^-?([1-9]/d*/./d*|0/./d*[1-9]/d*|0?/.0+|0)$

二、校驗字符的表達式

1 漢字:
^[/u4e00-/u9fa5]{0,}$
2 英文和數字:
^[A-Za-z0-9]+$ 或 ^[A-Za-z0-9]{4,40}$
3 長度為3-20的所有字符:
^.{3,20}$
4 由26個英文字母組成的字符串:
^[A-Za-z]+$
5 由26個大寫英文字母組成的字符串:
^[A-Z]+$
6 由26個小寫英文字母組成的字符串:
^[a-z]+$
7 由數字和26個英文字母組成的字符串:
^[A-Za-z0-9]+$
8 由數字、26個英文字母或者下劃線組成的字符串:
^/w+$ 或 ^/w{3,20}$
9 中文、英文、數字包括下劃線:
^[/u4E00-/u9FA5A-Za-z0-9_]+$
10 中文、英文、數字但不包括下劃線等符號:
^[/u4E00-/u9FA5A-Za-z0-9]+$ 或 ^[/u4E00-/u9FA5A-Za-z0-9]{2,20}$
11 可以輸入含有^% =?$/ 等字符:
[^% =?$/x22]+
12 禁止輸入含有~的字符:
[^~/x22]+

三、特殊需求表達式

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 、手機號碼:
^(13[0-9]|14[5|7]|15[0|1|2|3|5|6|7|8|9]|18[0|1|2|3|5|6|7|8|9])/d{8}$
5 、電話號碼( XXX-XXXXXXX 、 XXXX-XXXXXXXX 、 XXX-XXXXXXX 、 XXX-XXXXXXXX 、 XXXXXXX 和 XXXXXXXX):
^(/(/d{3,4}-)|/d{3.4}-)?/d{7,8}$
6 國內電話號碼(0511-4405222、021-87888822):
/d{3}-/d{8}|/d{4}-/d{7}
7 、身份證號:
15或18位身份證:
^/d{15}|/d{18}$
15位身份證:
^[1-9]/d{7}((0/d)|(1[0-2]))(([0|1|2]/d)|3[0-1])/d{3}$
18位身份證:
^[1-9]/d{5}[1-9]/d{3}((0/d)|(1[0-2]))(([0|1|2]/d)|3[0-1])/d{4}$
8、 短身份證號碼(數字、字母x結尾):
^([0-9]){7,18}(x|X)?$

^/d{8,18}|[0-9x]{8,18}|[0-9X]{8,18}?$
9 、帳號是否合法(字母開頭,允許5-16字節,允許字母數字下劃線):
^[a-zA-Z][a-zA-Z0-9_]{4,15}$
10 、密碼(以字母開頭,長度在6~18之間,只能包含字母、數字和下劃線):
^[a-zA-Z]/w{5,17}$
11 、強密碼(必須包含大小寫字母和數字的組合,不能使用特殊字符,長度在8-10之間):
^(?=.*/d)(?=.*[a-z])(?=.*[A-Z]).{8,10}$
12、 日期格式:
^/d{4}-/d{1,2}-/d{1,2}
13、 一年的12個月(01~09和1~12):
^(0?[1-9]|1[0-2])$
14 、一個月的31天(01~09和1~31):
^((0?[1-9])|((1|2)[0-9])|30|31)$
15 、錢的輸入格式:
16 、1.有四種錢的表示形式我們可以接受: 10000.00 和 10,000.00 , 和沒有 分 的 10000 和 10,000 :
^[1-9][0-9]*$
17、 2.這表示任意一個不以0開頭的數字,但是,這也意味著一個字符 0 不通過,所以我們采用下面的形式:
^(0|[1-9][0-9]*)$
18 、3.一個0或者一個不以0開頭的數字.我們還可以允許開頭有一個負號:
^(0|-?[1-9][0-9]*)$
19 、4.這表示一個0或者一個可能為負的開頭不為0的數字.讓用戶以0開頭好了.把負號的也去掉,因為錢總不能是負的吧.下面我們要加的是說明可能的小數部分:
^[0-9]+(.[0-9]+)?$
20 、5.必須說明的是,小數點后面至少應該有1位數,所以 10. 是不通過的,但是 10 和 10.2 是通過的:
^[0-9]+(.[0-9]{2})?$
21、 6.這樣我們規定小數點后面必須有兩位,如果你認為太苛刻了,可以這樣:
^[0-9]+(.[0-9]{1,2})?$
22、 7.這樣就允許用戶只寫一位小數.下面我們該考慮數字中的逗號了,我們可以這樣:
^[0-9]{1,3}(,[0-9]{3})*(.[0-9]{1,2})?$
23 、8.1到3個數字,后面跟著任意個 逗號+3個數字,逗號成為可選,而不是必須:
^([0-9]+|[0-9]{1,3}(,[0-9]{3})*)(.[0-9]{1,2})?$
24 、備注:這就是最終結果了,別忘了 + 可以用 * 替代如果你覺得空字符串也可以接受的話(奇怪,為什么?)最后,別忘了在用函數時去掉去掉那個反斜杠,一般的錯誤都在這里
25 、xml文件:
^([a-zA-Z]+-?)+[a-zA-Z0-9]+//.[x|X][m|M][l|L]$
26 、中文字符的正則表達式:
[/u4e00-/u9fa5]
27 、雙字節字符:
[^/x00-/xff]
(包括漢字在內,可以用來計算字符串的長度(一個雙字節字符長度計2,ASCII字符計1))
28 、空白行的正則表達式:/n/s*/r (可以用來刪除空白行)
29 、HTML標記的正則表達式:
(/S*?)[^ ]* .*? //1 | .*? / (網上流傳的版本太糟糕,上面這個也僅僅能部分,對于復雜的嵌套標記依舊無能為力)
30 、首尾空白字符的正則表達式:^/s*|/s*$或(^/s*)|(/s*$) (可以用來刪除行首行尾的空白字符(包括空格、制表符、換頁符等等),非常有用的表達式)
31 、騰訊QQ號:[1-9][0-9]{4,} (騰訊QQ號從10000開始)
32 、中國郵政編碼:[1-9]/d{5}(?!/d) (中國郵政編碼為6位數字)
33、 IP地址:/d+/./d+/./d+/./d+ (提取IP地址時有用)

以上就是php正則的內容總結(詳細)的詳細內容,PHP教程

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
成人免费大片黄在线播放| 成人春色激情网| 欧美另类精品xxxx孕妇| 国产精品中文字幕在线观看| 成人高h视频在线| 国产精品视频在线观看| 久久久久久噜噜噜久久久精品| 亚洲新声在线观看| 丝袜美腿亚洲一区二区| 91sa在线看| 一区二区av在线| 亚洲高清久久久久久| 黑人狂躁日本妞一区二区三区| 久久久久久亚洲精品| 成人一区二区电影| 日韩在线播放视频| 57pao国产成人免费| 国产亚洲精品高潮| 欧美一区二粉嫩精品国产一线天| 中文字幕亚洲欧美日韩2019| 亚洲qvod图片区电影| 亚洲第一精品电影| 91亚洲精品在线观看| 精品在线小视频| 日本亚洲欧美三级| 日韩av快播网址| 亚洲人精品午夜在线观看| 国产精品免费小视频| 国产精品第1页| 亚洲国产精品va在线看黑人动漫| 国产999精品久久久| 国产色婷婷国产综合在线理论片a| 欧美劲爆第一页| 九九热这里只有精品免费看| 国产精品久久一区主播| 成人97在线观看视频| 国产欧美精品久久久| 久久青草福利网站| 国产精品狠色婷| 97在线观看免费| 精品国产成人av| 国产精品jizz在线观看麻豆| 亚洲国产一区自拍| 欧美一级在线播放| www.xxxx精品| 亚洲网站在线播放| 九九九久久国产免费| 亚洲精品久久7777777| 日韩视频免费在线| 亚州av一区二区| 中文字幕精品在线视频| 国产成人精品视频在线| 国产狼人综合免费视频| 欧美成人午夜激情视频| 久久黄色av网站| 久色乳综合思思在线视频| 久久人人爽人人爽人人片av高请| 青青草99啪国产免费| 国产精品高清免费在线观看| 国内精品久久久久影院 日本资源| 日韩精品极品视频| 欧美中文字幕在线播放| 91地址最新发布| 精品久久久久久久久久ntr影视| 亚洲精品国产电影| 久久久久久999| 欧美另类在线观看| 色偷偷av亚洲男人的天堂| 97香蕉超级碰碰久久免费软件| 亚洲男人的天堂在线播放| 国产成人精品av| 国产精品99蜜臀久久不卡二区| 欧美一区二区三区免费视| 久久精品久久久久电影| 亚洲精品久久久久| 亚洲自拍偷拍色图| 欧美大胆在线视频| 亚洲综合在线中文字幕| 中文字幕视频一区二区在线有码| 亚洲国产高潮在线观看| 日本精品视频在线| 日韩精品高清在线观看| 国产精品三级美女白浆呻吟| 亚洲大胆人体视频| 欧美三级免费观看| 日韩av有码在线| 久久亚洲国产精品成人av秋霞| 国产精品白嫩初高中害羞小美女| 欧美专区福利在线| 中文字幕欧美日韩在线| 久久久久久久久久久人体| 亚洲国产精品成人va在线观看| 国产91精品在线播放| 亚洲午夜未删减在线观看| 国产精品久久久久久五月尺| 久久久精品国产| 在线观看国产成人av片| 国产亚洲在线播放| 久久久精品欧美| 人体精品一二三区| 欧美不卡视频一区发布| 日本不卡免费高清视频| 精品国产91久久久久久| 欧美xxxx做受欧美.88| 久久视频在线播放| 国产亚洲福利一区| 国产在线观看精品一区二区三区| 国产精品国产福利国产秒拍| 日本精品视频在线播放| 日韩av色在线| 68精品久久久久久欧美| 91成人在线播放| 国产精品女主播视频| 欧美精品在线免费观看| 欧美日韩激情美女| 欧美视频在线看| 欧美黑人极品猛少妇色xxxxx| 欧美电影免费观看高清| 亚洲精品一区二三区不卡| 国产亚洲欧美日韩精品| 日韩欧美精品网址| 日韩一级裸体免费视频| 国产精品视频成人| 91丝袜美腿美女视频网站| 国产欧美日韩视频| 中文字幕日韩综合av| 国产一区二区三区免费视频| 欧美日韩国产一区二区| 久久中文字幕视频| 国产精品一区二区三区免费视频| 在线看欧美日韩| 中文字幕日韩欧美| 亚洲国产精品美女| 欧美激情第1页| 蜜臀久久99精品久久久无需会员| 国产精品中文字幕在线观看| 亚洲理论电影网| 日韩高清电影免费观看完整| 日韩精品中文字幕在线观看| 亚洲香蕉伊综合在人在线视看| 国产精品尤物福利片在线观看| 日韩欧美极品在线观看| 尤物九九久久国产精品的分类| 日韩三级成人av网| 日韩禁在线播放| 精品国产一区二区三区久久狼黑人| 欧美性视频网站| 亚洲第一精品夜夜躁人人爽| 国产色婷婷国产综合在线理论片a| 日韩av电影免费观看高清| 日韩中文字幕精品| 成人午夜在线视频一区| 爽爽爽爽爽爽爽成人免费观看| 日韩精品小视频| 国产91ⅴ在线精品免费观看| 久久精品视频在线观看| 国产精品久久久久久久久久99| 国产精品久久久久久久av电影| 亚洲片在线观看| 最近2019中文免费高清视频观看www99| 国产69精品久久久久99| 久久久视频在线| 57pao成人国产永久免费| 日韩av网站导航|