六月婷婷综合激情-六月婷婷综合-六月婷婷在线观看-六月婷婷在线-亚洲黄色在线网站-亚洲黄色在线观看网站

明輝手游網(wǎng)中心:是一個(gè)免費(fèi)提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺(tái)!

asp中正則表達(dá)式的應(yīng)用

[摘要]asp中正則表達(dá)式的應(yīng)用一、正則表達(dá)式概述 二、正則表達(dá)式在VBScript中的應(yīng)用 三、正則表達(dá)式在VavaScript中的應(yīng)用 四、示例 五、總結(jié) 一、正則表達(dá)式概述 如果原來沒有使...

asp中正則表達(dá)式的應(yīng)用一、正則表達(dá)式概述 
二、正則表達(dá)式在VBScript中的應(yīng)用 
三、正則表達(dá)式在VavaScript中的應(yīng)用 
四、示例 
五、總結(jié) 

一、正則表達(dá)式概述 
如果原來沒有使用過正則表達(dá)式,那么可能對(duì)這個(gè)術(shù)語和概念會(huì)不太熟悉。不過,它們并不是您想象的那么新奇。 
請(qǐng)回想一下在硬盤上是如何查找文件的。您肯定會(huì)使用 ? 和 * 字符來幫助查找您正尋找的文件。? 字符匹配文件名 
中的單個(gè)字符,而 * 則匹配一個(gè)或多個(gè)字符。一個(gè)如 'data?.dat' 的模式可以找到下述文件:data1.dat、data2.dat等 
等。如果使用 * 字符代替 ? 字符,則將擴(kuò)大找到的文件數(shù)量。'data*.dat' 可以匹配下述所有文件名:data.dat、 
data1.dat、data12.dat等等,盡管這種搜索文件的方法肯定很有用,但也十分有限。? 和 * 通配符的有限能力可以使你 
對(duì)正則表達(dá)式能做什么有一個(gè)概念,不過正則表達(dá)式的功能更強(qiáng)大,也更靈活。 
在我們編寫ASP程序時(shí),經(jīng)常會(huì)判斷一個(gè)字符串的有效性,如;一個(gè)串是否是數(shù)字、是否是有效的Email地址等等。如 
果不使用正則表達(dá)式,那么判斷的程序會(huì)很長(zhǎng),并且容易出錯(cuò),如果使用正則表達(dá)式,這些判斷就是一件很輕松的工作 
了。后面我們將介紹如何判斷數(shù)字和Email地址的有效性。 
在典型的搜索和替換操作中,必須提供要查找的確切文字。這種技術(shù)對(duì)于靜態(tài)文本中的簡(jiǎn)單搜索和替換任務(wù)可能足夠 
了,但是由于它缺乏靈活性,因此在搜索動(dòng)態(tài)文本時(shí)就有困難了,甚至是不可能的。 
使用正則表達(dá)式,能完成些什么事情呢? 
測(cè)試字符串的某個(gè)模式。例如,可以對(duì)一個(gè)輸入字符串進(jìn)行測(cè)試,看在該字符串是否存在一個(gè)電話號(hào)碼模式或一個(gè)信 
用卡號(hào)碼模式。這稱為數(shù)據(jù)有效性驗(yàn)證。 
替換文本。可以在文檔中使用一個(gè)正則表達(dá)式來標(biāo)識(shí)特定文字,然后可以全部將其刪除,或者替換為別的文字。 
根據(jù)模式匹配從字符串中提取一個(gè)子字符串。可以用來在文本或輸入字段中查找特定文字。 
例如,如果需要搜索整個(gè) web 站點(diǎn)來刪除某些過時(shí)的材料并替換某些HTML 格式化標(biāo)記,則可以使用正則表達(dá)式對(duì)每 
個(gè)文件進(jìn)行測(cè)試,看在該文件中是否存在所要查找的材料或 HTML 格式化標(biāo)記。用這個(gè)方法,就可以將受影響的文件范圍 
縮小到包含要?jiǎng)h除或更改的材料的那些文件。然后可以使用正則表達(dá)式來刪除過時(shí)的材料,最后,可以再次使用正則表達(dá) 
式來查找并替換那些需要替換的標(biāo)記。 
那么,正則表達(dá)式語法的語法是如何呢? 
一個(gè)正則表達(dá)式就是由普通字符(例如字符 a 到 z)以及特殊字符(稱為元字符)組成的文字模式。該模式描述在查找文 
字主體時(shí)待匹配的一個(gè)或多個(gè)字符串。正則表達(dá)式作為一個(gè)模板,將某個(gè)字符模式與所搜索的字符串進(jìn)行匹配。 
這里有一些可能會(huì)遇到的正則表達(dá)式示例: 
/^\[ \t]*$/ "^\[ \t]*$" 匹配一個(gè)空白行。 
/\d{2}-\d{5}/ "\d{2}-\d{5}" 驗(yàn)證一個(gè)ID 號(hào)碼是否由一個(gè)2位數(shù)字,一個(gè)連字符以及一個(gè)5位數(shù)字組成。 
/<(.*)>.*<\/\1>/ "<(.*)>.*<\/\1>" 匹配一個(gè) HTML 標(biāo)記。 

二、正則表達(dá)式在VBScript中的應(yīng)用 
VBScript使用RegExp對(duì)象、Matches集合以及Match對(duì)象提供正則表達(dá)式支持功能。我們還是先看一個(gè)例子。 
<%
Function RegExpTest(patrn, strng)
Dim regEx, Match, Matches '建立變量。
Set regEx = New RegExp '建立正則表達(dá)式。
regEx.Pattern = patrn'設(shè)置模式。
regEx.IgnoreCase = True '設(shè)置是否區(qū)分字符大小寫。
regEx.Global = True '設(shè)置全局可用性。
Set Matches = regEx.Execute(strng)'執(zhí)行搜索。
For Each Match in Matches'遍歷匹配集合。
RetStr = RetStr & "Match found at position "
RetStr = RetStr & Match.FirstIndex & ". Match Value is '"
RetStr = RetStr & Match.Value & "'." & "
"
Next
RegExpTest = RetStr
End Function
response.write RegExpTest("[ij]s.", "IS1 Js2 IS3 is4")
%> 
在這個(gè)例子中,我們查找字符串中有無is或者js這兩個(gè)詞,忽略大小寫。運(yùn)行的結(jié)果如下: 
Match found at position 0. Match Value is 'IS1'. 
Match found at position 4. Match Value is 'Js2'. 
Match found at position 8. Match Value is 'IS3'. 
Match found at position 12. Match Value is 'is4'. 
下面我們就介紹這三個(gè)對(duì)象和集合。 
1、RegExp對(duì)象是最重要的一個(gè)對(duì)象,它有幾個(gè)屬性,其中: 
○Global 屬性,設(shè)置或返回一個(gè) Boolean 值,該值指明在整個(gè)搜索字符串時(shí)模式是全部匹配還是只匹配第一個(gè)。如 
果搜索應(yīng)用于整個(gè)字符串,Global 屬性的值為 True,否則其值為 False。默認(rèn)的設(shè)置為 False。 
○IgnoreCase 屬性,設(shè)置或返回一個(gè)Boolean值,指明模式搜索是否區(qū)分大小寫。如果搜索是區(qū)分大小寫的,則 
IgnoreCase 屬性為 False;否則為 True。缺省值為 False。 
○Pattern 屬性,設(shè)置或返回被搜索的正則表達(dá)式模式。必選項(xiàng)。總是一個(gè) RegExp 對(duì)象變量。 
2、Match 對(duì)象 
匹配搜索的結(jié)果是存放在Match對(duì)象中,提供了對(duì)正則表達(dá)式匹配的只讀屬性的訪問。 Match 對(duì)象只能通過 RegExp 
對(duì)象的 Execute 方法來創(chuàng)建,該方法實(shí)際上返回了 Match 對(duì)象的集合。所有的 Match 對(duì)象屬性都是只讀的。在執(zhí)行正則 
表達(dá)式時(shí),可能產(chǎn)生零個(gè)或多個(gè) Match 對(duì)象。每個(gè) Match 對(duì)象提供了被正則表達(dá)式搜索找到的字符串的訪問、字符串的 
長(zhǎng)度,以及找到匹配的索引位置等。 
○FirstIndex 屬性,返回在搜索字符串中匹配的位置。FirstIndex 屬性使用從零起算的偏移量,該偏移量是相對(duì)于 
搜索字符串的起始位置而言的。換言之,字符串中的第一個(gè)字符被標(biāo)識(shí)為字符 0 
○Length 屬性,返回在字符串搜索中找到的匹配的長(zhǎng)度。 
○Value 屬性,返回在一個(gè)搜索字符串中找到的匹配的值或文本。 
3、Matches 集合 
正則表達(dá)式 Match 對(duì)象的集合。Matches 集合中包含若干獨(dú)立的 Match 對(duì)象,只能使用 RegExp 對(duì)象的 Execute 方 
法來創(chuàng)建之。與獨(dú)立的 Match 對(duì)象屬性相同,Matches `集合的一個(gè)屬性是只讀的。在執(zhí)行正則表達(dá)式時(shí),可能產(chǎn)生零個(gè) 
或多個(gè) Match 對(duì)象。每個(gè) Match 對(duì)象都提供了與正則表達(dá)式匹配的字符串的訪問入口、字符串的長(zhǎng)度,以及標(biāo)識(shí)匹配位 
置的索引。 
學(xué)習(xí)了這三個(gè)對(duì)象和集合,如何應(yīng)用于字符串的判斷和替換呢?regExp對(duì)象的三個(gè)方法正好解決了這個(gè)問題,它們是 
Replace方法、Test方法和Execute方法。 
1、Replace 方法 
替換在正則表達(dá)式查找中找到的文本。我們還是先看個(gè)例子:下面的例子說明了 Replace 方法的用法。 
<%
Function ReplaceTest(patrn, replStr)
Dim regEx, str1 ' 建立變量。
str1 = "The quick brown fox jumped over the lazy dog."
Set regEx = New RegExp ' 建立正則表達(dá)式。
regEx.Pattern = patrn ' 設(shè)置模式。
regEx.IgnoreCase = True ' 設(shè)置是否區(qū)分大小寫。
ReplaceTest = regEx.Replace(str1, replStr) ' 作替換。
End Function
Response.write ReplaceTest("fox", "cat") & "
" ' 將 'fox' 替換為 'cat'。
Response.write ReplaceTest("(\S+)(\s+)(\S+)", "$3$2$1") ' 交換詞對(duì).
%> 
2、Test 方法 
對(duì)指定的字符串執(zhí)行一個(gè)正則表達(dá)式搜索,并返回一個(gè) Boolean 值指示是否找到匹配的模式。正則表達(dá)式搜索的實(shí)際 
模式是通過RegExp對(duì)象的Pattern屬性來設(shè)置的。RegExp.Global屬性對(duì)Test方法沒有影響。 
如果找到了匹配的模式,Test方法返回True;否則返回False。下面的代碼說明了Test 方法的用法。 
<%
Function RegExpTest(patrn, strng)
Dim regEx, retVal ' 建立變量。
Set regEx = New RegExp ' 建立正則表達(dá)式。
regEx.Pattern = patrn ' 設(shè)置模式。
regEx.IgnoreCase = False ' 設(shè)置是否區(qū)分大小寫。
retVal = regEx.Test(strng) ' 執(zhí)行搜索測(cè)試。
If retVal Then
RegExpTest = "找到一個(gè)或多個(gè)匹配。"
Else
RegExpTest = "未找到匹配。"
End If
End Function
Response.write RegExpTest("is.", "IS1 is2 IS3 is4")
%> 
3、Execute 方法 
對(duì)指定的字符串執(zhí)行正則表達(dá)式搜索。正則表達(dá)式搜索的設(shè)計(jì)模式是通過 RegExp 對(duì)象的 Pattern 來設(shè)置的。 
Execute 方法返回一個(gè) Matches 集合,其中包含了在 string 中找到的每一個(gè)匹配的 Match 對(duì)象。如果未找到匹 
配,Execute 將返回空的 Matches 集合。 

三、JavaScript中正則表達(dá)式的使用 
在JavaScript 1.2版以后,JavaScript也支持正則表達(dá)式。 
1、replace 
replace在一個(gè)字符串中通過正則表達(dá)式查找替換相應(yīng)的內(nèi)容。replace并不改變?cè)瓉淼淖址皇侵匦律闪艘粋(gè) 
新的字符串。如果需要執(zhí)行全局查找或忽略大小寫,那么在正則表達(dá)式的最后添加g和i。 
例: 
<SCRIPT> 
re = /apples/gi; 
str = "Apples are round, and apples are juicy."; 
newstr=str.replace(re, "oranges"); 
document.write(newstr) 
</SCRIPT> 
結(jié)果是:"oranges are round, and oranges are juicy." 
例: 
<SCRIPT> 
str = "Twas the night before Xmas..."; 
newstr=str.replace(/xmas/i, "Christmas"); 
document.write(newstr) 
</SCRIPT> 
結(jié)果是:"Twas the night before Christmas..." 
例: 
<SCRIPT> 
re = /(\w+)\s(\w+)/;str = "John Smith"; 
newstr = str.replace(re, "$2, $1"); 
document.write(newstr) 
</SCRIPT> 
結(jié)果是:"Smith, John". 
2、search 
search通過正則表達(dá)式查找相應(yīng)的字符串,只是判斷有無匹配的字符串。如果查找成功,search返回匹配串的位置, 
否則返回-1。 
search(regexp) 
<SCRIPT> 
function testinput(re, str){ 
if (str.search(re) != -1) 
midstring = " contains "; 
else 
midstring = " does not contain "; 
document.write (str + midstring + re.source); 

testinput(/^[1-9]/i,"123") 
</SCRIPT> 
3、match 
match方法執(zhí)行全局查找,查找結(jié)果存放在一個(gè)數(shù)組里。 
例一: 
<SCRIPT> 
str = "For more information, see Chapter 3.4.5.1"; 
re = /(chapter \d+(\.\d)*)/i; 
found = str.match(re); 
document.write(found); 
</SCRIPT> 
顯示結(jié)果:Chapter 3.4.5.1,Chapter 3.4.5.1,.1 
例二: 
<SCRIPT> 
str = "abcDdcba"; 
newArray = str.match(/d/gi); 
document.write(newArray); 
</SCRIPT> 
顯示結(jié)果D, d. 

四、示例 
1 、判斷數(shù)字的正確性 
<%@ Language=VBScript %> 
<script language="javascript" runat="server"> 
function isNumeric(strNumber) { 
return (strNumber.search(/^(- \+)?\d+(\.\d+)?$/) != -1); 

function isUnsignedNumeric(strNumber) { 
return (strNumber.search(/^\d+(\.\d+)?$/) != -1); 

function isInteger(strInteger) { 
return (strInteger.search(/^(- \+)?\d+$/) != -1); 

function isUnsignedInteger(strInteger) { 
return (strInteger.search(/^\d+$/) != -1); 

</script> 
<HTML> 
<BODY> 
判斷數(shù)字的正確性 
<%
Dim strTemp
strTemp = CStr(Request.Form("inputstring"))
If strTemp = "" Then strTemp = "0"
%> 
<TABLE BORDER="1" CELLPADDING="4" CELLSPACING="2"> 
<TR> 
<TD ALIGN="right">原始字符串</TD> 
<TD><%= strTemp %></TD> 
</TR> 
<TR> 
<TD ALIGN="right">數(shù)字</TD> 
<TD><%=isNumeric(strTemp)%></TD> 
</TR> 
<TR> 
<TD ALIGN="right">非負(fù)數(shù)字</TD> 
<TD><%=isUnsignedNumeric(strTemp)%></TD> 
</TR> 
<TR> 
<TD ALIGN="right">整數(shù)</TD> 
<TD><%=isInteger(strTemp)%></TD> 
</TR> 
<TR> 
<TD ALIGN="right">非負(fù)整數(shù)()</TD> 
<TD><%=isUnsignedInteger(strTemp)%></TD> 
</TR> 
</TABLE> 
<FORM ACTION="<%=Request.ServerVariables("SCRIPT_NAME")%>" METHOD="post"> 
請(qǐng)輸入一個(gè)數(shù)字:
 
<INPUT TYPE="text" NAME="inputstring" SIZE="50"></INPUT>
 
<INPUT TYPE="submit" Value="提交"></INPUT>
 
</FORM> 
</BODY> 
</HTML> 
2、判斷Email地址的正確性 
<%
Function isemail(strng)
isemail = false
Dim regEx, Match
Set regEx = New RegExp
regEx.Pattern = "^\w+((-\w+) (\.\w+))*\@[A-Za-z0-9]+((\. -)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$"
regEx.IgnoreCase = True
Set Match = regEx.Execute(strng)
if match.count then isemail= true
End Function
%>


五、總結(jié) 
上面我們介紹了正則表達(dá)式的基本概念,以及在VBScript和JavaScript中如何使用正則表達(dá)式,同時(shí),通過一些實(shí)例 
讓大家有了感性的認(rèn)識(shí)。正則表達(dá)式的應(yīng)用范圍很廣,能為大家解決很多實(shí)際中的問題。本文介紹的內(nèi)容只是一些初步的 
知識(shí),還有很多語法規(guī)則需要大家繼續(xù)學(xué)習(xí),在實(shí)踐中發(fā)現(xiàn)問題,解決問題。 返回頂部 



怎么實(shí)現(xiàn)數(shù)據(jù)記錄的分頁顯示(作者:DarkMan) 

怎么實(shí)現(xiàn)數(shù)據(jù)記錄的分頁顯示 (1) 

通過Recordset的GetRows方法,可以實(shí)現(xiàn)數(shù)據(jù)記錄的分頁顯示。下面是一個(gè)完整的例子: 
<%@ Language = VBSCRIPT %> 
<% Option Explicit %> 
<%
Dim iStart, iOffset
iStart = Request("Start")
iOffset = Request("Offset")

if Not IsNumeric(iStart) or Len(iStart) = 0 then
iStart = 0
else
iStart = CInt(iStart)
end if

if Not IsNumeric(iOffset) or Len(iOffset) = 0 then
iOffset = 10
else
iOffset = Cint(iOffset)
end if

Response.Write "察看 " & iOffset & " 個(gè)記錄從 " & iStart & "開始
"

Dim objConn, objRS
Set objConn = Server.CreateObject("ADODB.Connection")
objConn.Open "Provider=SQLOLEDB.1;Data Source=(local);uid=sa;pwd=;Initial Catalog=pubs"

Set objRS = Server.CreateObject("ADODB.Recordset")
objRS.Open "SELECT * FROM Authors", objConn

Dim aResults
aResults = objRS.GetRows

objRS.Close
Set objRS = Nothing

objConn.Close
Set objConn = Nothing

Dim iRows, iCols, iRowLoop, iColLoop, iStop
iRows = UBound(aResults, 2)
iCols = UBound(aResults, 1)

If iRows > (iOffset + iStart) Then 
iStop = iOffset + iStart - 1 
Else 
iStop = iRows 
End If 

For iRowLoop = iStart to iStop 
For iColLoop = 0 to iCols 
Response.Write aResults(iColLoop, iRowLoop) & " " 
Next 
Response.Write "

Next 

Response.Write "<P>" 
if iStart > 0 then 
'顯示“前 10個(gè)”連接 
Response.Write "<A HREF=""paging.asp?Start=" & iStart-iOffset & _
"&Offset=" & iOffset & """>前 " & iOffset & "" 
end if 

if iStop < iRows then
'顯示“后 10個(gè)”連接
Response.Write " <A HREF=""paging.asp?Start=" & iStart+iOffset & _
"&Offset=" & iOffset & """>后 " & iOffset & "" 
end if 
%> 


怎么實(shí)現(xiàn)數(shù)據(jù)的分頁顯示(2) 
這里介紹另外一種分頁顯示的方法,是通過 MS SQL的存儲(chǔ)過程。本方法不適用于Access數(shù)據(jù)庫。 
假設(shè)我們要對(duì)數(shù)據(jù)表MyTable的數(shù)據(jù)實(shí)現(xiàn)分頁顯示,首先寫一個(gè)存儲(chǔ)過程 如下: 
CREATE PROCEDURE sp_PagedItems 

@Page int, 
@RecsPerPage int 

AS 

-- 加快表的 插入速度 
SET NOCOUNT ON 

-- 開始記錄 號(hào) 
DECLARE @RecCount int 
SELECT @RecCount = @RecsPerPage * @Page + 1 

--創(chuàng)建臨時(shí) 表 
CREATE TABLE #TempItems 

ID int IDENTITY, 
Name varchar(50), 
Price currency 


-- 準(zhǔn)備臨時(shí) 表 
INSERT INTO #TempItems (Name, Price) 
SELECT Name,Price FROM MyTable ORDER BY Price 

-- 求出要查 詢的最小ID和最大ID 
DECLARE @FirstRec int, @LastRec int 
SELECT @FirstRec = (@Page - 1) * @RecsPerPage 
SELECT @LastRec = (@Page * @RecsPerPage + 1) 

-- 得到實(shí)際 的記錄,并返回是否還有數(shù)據(jù)! 
SELECT *, 
MoreRecords = 

SELECT COUNT(*) 
FROM #TempItems TI 
WHERE TI.ID >= @LastRec 

FROM #TempItems 
WHERE ID > @FirstRec AND ID < @LastRec

-- 恢復(fù)設(shè)置
SET NOCOUNT OFF

在這個(gè)存儲(chǔ)過程里,我們首先創(chuàng)建一個(gè)全部 記錄的臨時(shí)表,并增加了一個(gè)自動(dòng)編號(hào)的字段ID。這樣,不同的記錄就有
一個(gè)遞增的唯一標(biāo)志。
根據(jù)當(dāng)前的頁號(hào)和每頁的記錄數(shù),可以計(jì)算 出每頁的最小和最大的ID。從而得到當(dāng)前頁的所有記錄。
為了顯示的方便,存儲(chǔ)過程還計(jì)算了 MoreRecords字段,作為顯示下一頁的判斷條件。
利用了這個(gè)存儲(chǔ)過程的程序代碼如下:
<%
'每頁顯示10條
Const iRecordsPerPage = 10

Dim currentPage '當(dāng)前頁號(hào)
Dim bolLastPage '在最后一頁?

if len(Request.QueryString("page")) = 0 then
currentPage = 1
else
currentPage = CInt(Request.QueryString("page"))
end if

'得到當(dāng)前頁的記錄
strSQL = "sp_PagedItems " & currentPage & "," & iRecordsPerPage
objRS.Open strSQL, objConn

'判斷是否在最后一頁
if Not objRS.EOF then
if CInt(objRS("MoreRecords")) > 0 then 
bolLastPage = False 
else 
bolLastPage = True 
end if 
end if 
%> 
<P> 

<TABLE BORDER=0 CELLSPACING=1 CELLPADDING=4 ALIGN=CENTER> 
<TR><TH COLSPAN=2 BGCOLOR=NAVY> 
<FONT SIZE=+1 COLOR=WHITE> 
List of Items 
 
</TH></TR> 
<%
Do While Not objRS.EOF %> 
<TR><TD ALIGN=LEFT BGCOLOR=GRAY> 
<%=objRS("Name")%> 
</TD><TD ALIGN=CENTER BGCOLOR=GRAY> 
<%=FormatCurrency(objRS("Price"))%> 
</TD></TR> 
<% objRS.MoveNext
Loop %> 
</TABLE> 
<P> 
<CENTER> 
<%

'第一頁不 顯示“前一頁”
if currentPage > 1 then %> 
<INPUT TYPE=BUTTON VALUE="<< 前 <%=iMaxRecords%> 記錄 " 
ONCLICK="document.location.href='thispage.asp?page=<%=currentPage-1%>'"> ; 
   
<% end if

'最后一頁 不顯示“后一頁”
if Not bolLastPage then %> 
<INPUT TYPE=BUTTON VALUE="后 <%=iMaxRecords%> 記錄 >>" 
ONCLICK="document.location.href='thispage.asp?page=<%=currentPage+1%>'"> ; 
<% end if %> 
</CENTER>


主站蜘蛛池模板: 欧美一区2区三区4区公司 | 天天欲色| 日韩欧美国产另类 | 天天爱天天插 | 日本七大伦理经典在线观看 | 午夜天堂在线视频 | 午夜影视在线视频观看免费 | 日本三区四区免费高清不卡 | 色综合久久夜色精品国产 | 尹人在线视频 | 色成人综合 | 十八禁毛片| 色福利视频导航 | 亚洲第一黄色 | 欧美亚洲h在线一区二区 | 最近最新免费中文字幕一 | 午夜影视网 | 婷婷丁香综合网 | 亚洲第一男人网站 | 日日爽夜夜 | 亚洲欧美激情综合第一区 | 做性视频 | 色好吊| 色成人综合网 | 亚洲美女大bbbbbbbbb | 一级毛片成人免费看免费不卡 | 亚洲精品亚洲人成在线 | 日韩一级片免费在线观看 | 日本一区二区三区免费高清在线 | 日本成人一区二区三区 | 青青青在线 | 欧美一级视频在线观看欧美 | 青草资源站 | 图片区亚洲 | 色综合欧美 | 青娱乐精品视频 | 天天影视色香欲性综合网网站 | 日韩a在线看免费观看视频 日韩a在线观看免费观看 | 青青91视频| 最新版天堂中文官网 | 最新韩国伦理片大全手机在线播放 |