午夜视频免费看_日韩三级电影网站_国产精品久久一级_亚洲一级在线播放_人妻体内射精一区二区三区_91夜夜揉人人捏人人添红杏_91福利在线导航_国产又粗又猛又黄又爽无遮挡_欧美日韩一区在线播放_中文字幕一区二区三区四区不卡 _日日夜夜精品视频免费观看_欧美韩日一区二区三区

主頁 > 知識庫 > 正則基礎之 神奇的轉義

正則基礎之 神奇的轉義

熱門標簽:遼寧秒客來電話機器人 山東外呼系統聯系方式 淄博市張店區地圖標注 惠安地圖標注 地圖標注店鋪地圖標注酒店 自己做的電銷機器人 浙江營銷外呼系統有哪些 哈爾濱公司外呼系統代理 上海銷售電銷機器人軟件
1 概述
這或許會是一個讓人迷惑,甚至感到混亂的話題,但也正因為如此,才有了討論的必要。
在正則中,一些具有特殊意義的字符,或是字符序列,被稱作元字符,如“?”表示被修飾的子表達式匹配0次或1次,“(?i)”表示忽略大小寫的匹配模式等等。而當這些元字符被要求匹配其本身時,就要進行轉義處理了。
不同的語言或應用場景下,正則定義方式、元字符出現的位置不同,轉義的方式也是林林總總,不一而同。
2 .NET正則中的字符轉義
2.1     .NET正則中的轉義符
絕大多數語言中,“\”都被作為轉義符,用來轉義一些具有特殊意義的字符或字符序列,比如“\n”表示換行,“\t”表示水平制表符等。而這樣的轉義,應用到正則中,又會有一些意想不到的變化。
話題由C#中一個正則問題引出
復制代碼 代碼如下:

string[] test = new string[]{"\\", "\\\\"};
Regex reg = new Regex("^\\\\$");
foreach (string s in test)
{
     richTextBox2.Text += "源字符串: " + s.PadRight(5, ' ') + "匹配結果: " + reg.IsMatch(s) + "\n";
}
/*--------輸出--------
源字符串: \&;   匹配結果: True
源字符串: \\   匹配結果: False
*/

對于這個結果,或許有人會感到迷惑,字符串中的“\\”不是代表一個經過轉義的“\”字符嗎?而“\\\\”不就應該代表兩個經過轉義的“\”字符嗎?那么上面正則匹配的結果應該是第一個為False,第二個為True才對啊?
對于這一問題,直接解釋或許不太容易理解,還是換種方式來解釋吧。
比如要匹配的字符是這樣的
string test = "(";
那么正則如何寫呢?因為“(”在正則中是有特殊意義的,所以寫正則時必須對它進行轉義,也就是“\(”,而在字符串中,要使用“\\” 來表示“\”本身,也就是
Regex reg = new Regex("^\\($");
這個如果理解了,那再把“(”換回“\”,同樣道理,在字符串中,要使用“\\” 來表示“\”本身,也就是
Regex reg = new Regex("^\\\\$");
通過這樣的分析,可以看出,其實在以字符串形式聲明的正則中,“\\\\”匹配的實際上就是單獨的一個“\”字符。總結一下它們之間的關系:
輸出到控制臺或界面的字符串:\
程序中聲明的字符串:string test = "\\";
程序中聲明的正則:Regex reg = new Regex("^\\\\$");
這樣解釋是不是已經可以理解了,那么是不是感覺這樣很笨拙?是的,在程序中以字符串形式聲明的正則,涉及到轉義符時就是這樣笨拙的。
所以在C#中,還提供了另一種字符串聲明方式,在字符串前加個“@”,就可以忽略轉義。
復制代碼 代碼如下:

string[] test = new string[] { @"\", @"\\" };
Regex reg = new Regex(@"^\\$");
foreach (string s in test)
{
    richTextBox2.Text += "源字符串: " + s.PadRight(5, ' ') + "匹配結果: " + reg.IsMatch(s) + "\n";
}
/*--------輸出--------
源字符串: \&;   匹配結果: True
源字符串: \\   匹配結果: False
*/

這樣就簡潔多了,也符合通常的理解。
但同時也帶來另一個問題,就是雙引號的轉義處理。在普通的字符串聲明中,可以用“\””對雙引號進行轉義。
string test = "a href=\"www.test.com\">only a test/a>";
但是在字符串前加了“@”后,“\”會被識別為“\”字符本身,這樣就不能用“\””對雙引號進行轉義了,需要用“”””對雙引號進行轉義。
string test = @"a href=""www.test.com"">only a test/a>";
而在VB.NET中,正則的定義只有一種形式,與C#中加了“@”后的定義方式是一致的。
復制代碼 代碼如下:

Dim test As String() = New String() {"\", "\\"}
Dim reg As Regex = New Regex("^\\$")
For Each s As String In test
    RichTextBox2.Text += "源字符串:" s.PadRight(5, " "c) "匹配結果:" reg.IsMatch(s) vbCrLf
Next
'--------輸出--------
'源字符串:\&;   匹配結果:True
'源字符串:\\   匹配結果:False
'--------------------

2.2     .NET正則中需要轉義的元字符
在MSDN中,以下字符作為正則中的元字符,在匹配其本身時,需要對其進行轉義
. $ ^ { [ ( | ) * + ? \
但實際應用中,還要根據實際情況來判斷,以上字符可能不需要轉義,也可能不止以上字符需要轉義。
在正常的正則書寫過程中,以上字符的轉義通常都能被編寫人員正常處理,但是在動態生成正則時,就需要格外的注意,否則變量中包含元字符時,動態生成的正則在編譯時可能會拋異常。好在.NET中提供了Regex.Escape方法來處理這一問題。比如根據動態獲取的id來提取相應的div標簽內容。
string id = Regex.Escape(textBox1.Text);
Regex reg = new Regex(@"(?is)div(?:(?!id=).)*id=(['""]?)" + id  + @"\1[^>]*>(?>div[^>]*>(?o>)|/div>(?-o>)|(?:(?!/?div\b).)*)* (?(o)(?!))/div>");
如果不做轉義處理,那么動態獲取的id如果為“abc(def”這種形式,程序運行過程中就會拋出異常了。
2.3     .NET正則中字符組的轉義
在字符組[]中,元字符通常是不需要轉義的,甚至于“[”也是不需要轉義的。
復制代碼 代碼如下:

string test = @"the test string:  . $ ^ { [ ( | ) * + ? \";
Regex reg = new Regex(@"[.$^{[(|)*+?\\]");
MatchCollection mc = reg.Matches(test);
foreach (Match m in mc)
{
     richTextBox2.Text += m.Value + "\n";
}
/*--------輸出--------
.
$
^
{
[
(

)
*
+
?
\
*/

但是在正則書寫時,字符組中的“[”還是建議使用“\[”對其轉義的,正則本身就已經是非常抽象,可讀性很低的了,如果在字符組中再摻雜進這樣不經轉義的“[”,會使得可讀性更差。而且在出現不正確的嵌套時,可能會導致正則編譯異常,以下正則在編譯時就會拋異常的。
Regex reg = new Regex(@"[.$^{[(]|)*+?\\]");
然而,.NET的字符組中,是支持集合減法的,在這種正常語法形式下,是允許字符組嵌套的。
復制代碼 代碼如下:

string test = @"abcdefghijklmnopqrstuvwxyz";
Regex reg = new Regex(@"[a-z-[aeiou]]+");
MatchCollection mc = reg.Matches(test);
foreach (Match m in mc)
{
     richTextBox2.Text += m.Value + "\n";
}
/*--------輸出--------
bcd
fgh
jklmn
pqrst
vwxyz
*/

這種用法可讀性很差,應用也很少見,即使有這種需求也可以通過其它方式實現,了解一下即可,不必深究。
話題再回到轉義上,字符組中必須轉義的只有“\”,而“[”和“]”出現在字符組中時,也是建議一定做轉義處理的。另外有兩個字符“^”和“-”,出現在字符組中特定位置時,如果要匹配其本身,也是需要轉義的。
“^”出現在字符組開始位置,表示排除型字符組,“[^Char]”也就是匹配除字符組中包含的字符之外的任意一個字符,比如“[^0-9]”表示除數字外的任意一個字符。所以在字符組中,要匹配“^”字符本身,要么不放在字符組開始位置,要么用“\^”進行轉義。
Regex reg1 = new Regex(@"[0-9^]");
Regex reg2 = new Regex(@"[\^0-9]");
這兩種方式都表達匹配任意一個數字或普通字符“^”。
至于“-”在字符組中特殊性,舉一個例子。
復制代碼 代碼如下:

string test = @"$";
Regex reg = new Regex(@"[#-*%]");
richTextBox2.Text = "匹配結果:" + reg.IsMatch(test);
/*--------輸出--------
匹配結果:True
*/

正則表達式中明明沒有“$”,為什么匹配結果會是“True”呢?
[]支持用連字符“-”連接兩個字符,來表示一個字符范圍。需要注意的是,“-”前后的兩個字符是有順序的,在使用相同的編碼時,后面的字符碼位應大于或等于前面字符的碼位。
復制代碼 代碼如下:

for (int i = '#'; i = '*'; i++)
{
     richTextBox2.Text += (char)i + "\n";
}
/*--------輸出--------
#
$
%

'
(
)
*
*/

由于“#”和“*”符合要求,“[#-*]”可以表示一個字符范圍,其中就包含了字符“$”,所以上面的正則是可以匹配“$”的,如果只是把“-”當作一個普通字符處理,那么要么換個位置,要么把“-”轉義。
Regex reg1 = new Regex(@"[#*%-]");
Regex reg2 = new Regex(@"[#\-*%]");
這兩種方式都表示匹配字符組中列舉的字符中的任意一個。
在字符組中,還有一個比較特殊的轉義字符,“\b”出現在正則表達式中一般位置時,表示單詞邊界,也就是一側為組成單詞的字符,另一側不是;而當“\b”出現在字符組中時,表示的是退格符,與普通字符串中出現的“\b”意義是一樣的。
同樣的,還有一個容易被忽視,而且經常被忽視的轉義符“|”,當“|”出現在正則表達式中一般位置時,表示左右兩側“或”的關系;而當“|”出現在字符組中時,它僅僅表示“|”字符本身,沒有任何特殊意義,所以如果不是要匹配“|”本身,而試圖在字符組中使用“|”時,是錯誤的。比如正則表達式“[a|b]”表示的是“a”、“b”、“|”中的任意一個,而不是“a”或“b”。
2.4     .NET正則應用中不可見字符轉義處理
對于一些不可見字符,要在字符串中表示時,需要用轉義字符,比較常見的有“\r”、“\n”、“\t”等等,而這些字符在正則中應用,就變得有些神奇了,先看一段代碼。
復制代碼 代碼如下:

string test = "one line. \n another line.";
ListRegex> list = new ListRegex>();
list.Add(new Regex("\n"));
list.Add(new Regex("\\n"));
list.Add(new Regex(@"\n"));
list.Add(new Regex(@"\\n"));
foreach (Regex reg in list)
{
    richTextBox2.Text += "正則表達式:" + reg.ToString();
    MatchCollection mc = reg.Matches(test);
    foreach (Match m in mc)
    {
        richTextBox2.Text += "   匹配內容:" + m.Value + "   匹配起始位置:" + m.Index + "   匹配長度:" + m.Length;
    }
    richTextBox2.Text += "   匹配總數:" + reg.Matches(test).Count + "\n----------------\n";
}
/*--------輸出--------
正則表達式:
   匹配內容:
   匹配起始位置:10   匹配長度:1   匹配總數:1
----------------
正則表達式:\n   匹配內容:
   匹配起始位置:10   匹配長度:1   匹配總數:1
----------------
正則表達式:\n   匹配內容:
   匹配起始位置:10   匹配長度:1   匹配總數:1
----------------
正則表達式:\\n   匹配總數:0
----------------
*/

可以看到,前三種寫法,輸出的正則雖不同,但執行結果卻是完全相同的,只有最后一種是沒有匹配的。
正則表達式一Regex("\n"),其實就是以普通字符串形式來聲明正則的,與用Regex("a")來匹配字符“a”是同樣的道理,是不經過正則引擎轉義的。
正則表達式二Regex("\\n"),是以正則表達式形式來聲明正則的,正如正則中的“\\\\”就等同于字符串中的“\\”一樣,正則中的“\\n”就等同于字符串中的“\n”,是經過正則引擎轉義的。
正則表達式三Regex(@"\n"),與正則表達式二等價,是字符串前加“@”的寫法。
正則表達式四Regex(@"\\n"),其實這個表示的是字符“\”后面跟一個字符“n”,是兩個字符,這個在源字符串中自然是找不到匹配項的。
這里需要特別注意的還是“\b”,不同的聲明方式,“\b”的意義是不同的。
復制代碼 代碼如下:

string test = "one line. \n another line.";
ListRegex> list = new ListRegex>();
list.Add(new Regex("line\b"));
list.Add(new Regex("line\\b"));
list.Add(new Regex(@"line\b"));
list.Add(new Regex(@"line\\b"));
foreach (Regex reg in list)
{
     richTextBox2.Text += "正則表達式:" + reg.ToString() + "\n";
     MatchCollection mc = reg.Matches(test);
     foreach (Match m in mc)
     {
          richTextBox2.Text += "匹配內容:" + m.Value + "   匹配起始位置:" + m.Index + "   匹配長度:" + m.Length + "\n";
     }
     richTextBox2.Text += "匹配總數:" + reg.Matches(test).Count + "\n----------------\n";
}
/*--------輸出--------
正則表達式:line_
匹配總數:0
----------------
正則表達式:line\b
匹配內容:line   匹配起始位置:4   匹配長度:4
匹配內容:line   匹配起始位置:20   匹配長度:4
匹配總數:2
----------------
正則表達式:line\b
匹配內容:line   匹配起始位置:4   匹配長度:4
匹配內容:line   匹配起始位置:20   匹配長度:4
匹配總數:2
----------------
正則表達式:line\\b
匹配總數:0
----------------
*/

正則表達式一Regex("line\b"),這里的“\b”是退格符,是不經過正則引擎轉義的。源字符串中是沒有的,所以匹配結果為0。
正則表達式二Regex("line\\b"),是以正則表達式形式來聲明正則的,這里的“\\b”是單詞邊界,是經過正則引擎轉義的。
正則表達式三Regex(@"line\b"),與正則表達式二等價,指單詞邊界。
正則表達式四Regex(@"line\\b"),其實這個表示的是字符“\”后面跟一個字符“b”,是兩個字符,這個在源字符串中自然是找不到匹配項的。
2.5     .NET正則應用中其它轉義處理
.NET正則應用中還有一些其它轉義方式,雖然用得不多,但也順便提一下吧。
需求:把字符串中“”和“>”之間的數字前加上“$”
復制代碼 代碼如下:

string test = "one test 123>, another test 321>";
Regex reg = new Regex(@"(\d+)>");
string result = reg.Replace(test, "$$1>");
richTextBox2.Text = result;
/*--------輸出--------
one test $1>, another test $1>
*/
也許你會驚奇的發現,替換結果不是在數字前加了“$”,而是將所有數字都替換為“$1”了。
為什么會這樣呢,這是因為在替換結構中,“$”是有特殊意義的,在它后面接數字,表示對對應編號捕獲組匹配結果的引用,而有些情況下,需要在替換結果中出現“$”字符本身,但它后面又跟了數字,這時候就需要用“$$”對它進行轉義了。而上面這個例子卻恰恰是由于這種轉義效果導致出現了異常結果,要規避這一問題,可以使替換結果中不出現對捕獲組的引用。
string test = "one test 123>, another test 321>";
Regex reg = new Regex(@"(?=)(?=\d+>)");
string result = reg.Replace(test, "$");
richTextBox2.Text = result;
/*--------輸出--------
one test $123>, another test $321>
*/

3 JavaScript及Java中的轉義符
JavaScript及Java中正則的轉義符處理,以字符串形式聲明時,基本上都是與.NET中一致的,簡單的介紹一下。
在JavaScript中,以字符串形式聲明正則,與C#中的表現是一樣的,同樣會顯得很笨拙。
復制代碼 代碼如下:

script type="text/javascript">
    var data = ["\\", "\\\\"];
    var reg = new RegExp("^\\\\$", "");
    for(var i=0;idata.length;i++)
    {
        document.write("源字符串:" + data[i]  + "   匹配結果:" + reg.test(data[i]) + "br />");
    }
/script>
/*--------輸出--------
源字符串:\ 匹配結果:true
源字符串:\\ 匹配結果:false
*/

JavaScript中雖然沒有提供C#中這種“@”方式的字符串聲明方式,但提供了另一種正則表達式的專有聲明方式。
復制代碼 代碼如下:

script type="text/javascript">
    var data = ["\\", "\\\\"];
    var reg = /^\\$/;
    for(var i=0;idata.length;i++)
    {
        document.write("源字符串:" + data[i]  + "   匹配結果:" + reg.test(data[i]) + "br />");
    }
/script>
/*--------輸出--------
源字符串:\ 匹配結果:true
源字符串:\\ 匹配結果:false
*/

JavaScript中
var reg = /Expression/igm;
這種聲明方式,一樣可以簡化含有轉義符的正則。
當然,以這種形式聲明正則時,“/”自然也就成為了元字符,正則中出現這一字符時,必須進行轉義處理。比如匹配鏈接中域名的正則
var reg = /http:\/\/:([^\/]+)/ig;
很不幸的是,在Java中,目前只提供了一種正則聲明方式,也就是字符串形式的聲明方式
復制代碼 代碼如下:

String test[] = new String[]{"\\", "\\\\" };
String reg = "^\\\\$";
for(int i=0;itest.length ;i++)
{
  System.out.println("源字符串:" + test[i] + "   匹配結果:" + Pattern.compile(reg).matcher(test[i]).find());
}
/*--------輸出--------
源字符串:\&;  匹配結果:true
源字符串:\\   匹配結果:false
*/

只能期待Java的后續版本能提供這方面的優化了。

標簽:重慶 宣城 銅川 綿陽 西安 泰州 無錫 長沙

巨人網絡通訊聲明:本文標題《正則基礎之 神奇的轉義》,本文關鍵詞  正則,基礎,之,神奇,的,轉義,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《正則基礎之 神奇的轉義》相關的同類信息!
  • 本頁收集關于正則基礎之 神奇的轉義的相關信息資訊供網民參考!
  • 推薦文章
    日韩国产在线一| 国产精品va在线播放| 亚洲黄色小说网址| 日本10禁啪啪无遮挡免费一区二区| 国产欧美日韩中文久久| 麻豆网站免费观看| 日韩中文字幕第一页| 日本va欧美va精品发布| av动漫在线看| 亚洲欧洲偷拍精品| 日本视频在线一区| 亚洲网中文字幕| 久久久久久午夜| 成人动漫视频在线| 野外性满足hd| 91九色对白| 亚洲成av人片在线| 国产免费一级视频| 精品人伦一区二区三区| 久久精品视频在线免费观看| aa片在线观看视频在线播放| 国产精品青青在线观看爽香蕉| 欧美国产日韩精品免费观看| 极品尤物一区二区| 九九九九九精品| 一区二区三区高清不卡| 免费污污视频在线观看| 激情五月婷婷六月| 一区二区欧美在线| 国产福利91精品| 男人天堂av电影| 国产精品对白刺激久久久| 欧美精品xxxxbbbb| 麻豆精品在线看| 91中文字幕永久在线| 国产精品三区www17con| 欧美一级在线观看| 成人avav在线| 69成人免费视频| 性刺激的欧美三级视频| 亚洲影院污污.| 亚洲精品电影在线观看| 久久蜜桃av一区二区天堂| 亚洲综合成人av| 91高清国产视频| 97影院在线午夜| 一本大道亚洲视频| 亚洲欧美国产77777| 亚洲aaa在线观看| 日韩视频中文字幕在线观看| 天堂av免费看| 2019日本中文字幕| 欧美一区二区国产| 欧美激情一区二区三区在线| 国产精品毛片一区视频播| 变态另类丨国产精品| 国产一区一区三区| 日本成人精品在线| 亚洲成人av在线播放| 国产精品欧美久久久久无广告| www久久久com| 日韩影院一区二区| 成人黄色一级大片| 亚洲人成人77777线观看| 68精品久久久久久欧美| 欧美mv日韩mv国产| 一区二区三区**美女毛片| 久久精品理论片| 亚洲午夜无码久久久久| 一本加勒比波多野结衣| 青草视频在线观看视频| 91嫩草在线| 欧美高清性猛交| 亚洲的天堂在线中文字幕| 亚洲伊人色欲综合网| 丁香一区二区三区| 人妻无码中文字幕免费视频蜜桃| 玖玖爱免费视频| 久久99精品国产一区二区三区| 这里只有精品在线播放| 欧美色图在线观看| 亚洲男人的天堂网| 99久久精品一区| 久久午夜av| 国产又黄又粗又硬| 影音先锋亚洲天堂| 亚洲精品色午夜无码专区日韩| 国产视频1区2区3区| 国产a级片网站| 日本一区免费在线观看| 亚洲最大福利网| 国产精品一区二区在线| 欧美亚洲日本网站| 久久久精品一区二区三区| 亚洲精品短视频| 欧美丝袜丝交足nylons图片| 亚洲国产人成综合网站| 亚洲色欲色欲www在线观看| 久久亚洲一区二区三区明星换脸| 国产suv一区二区三区88区| 久久国内精品自在自线400部| 国 产 黄 色 大 片| 亚洲成人精品女人久久久| 一级特黄aa大片| 一级黄色大片免费| 一级特黄录像免费看| 亚洲天堂aaa| 国内老熟妇对白xxxxhd| 超碰福利在线观看| 欧美一级在线免费观看 | 三级黄色录像视频| 日韩欧美综合在线| 91亚洲精品一区二区乱码| 日本女人一区二区三区| 中文在线免费看视频| 国产精品成人一区二区三区电影毛片| 看欧美ab黄色大片视频免费| 黄色大片中文字幕| 日本高清xxxx| 无颜之月在线看| 欧美日韩午夜爽爽| 在线不卡视频一区二区| 女人又爽又黄免费女仆| av男人天堂av| 蜜臀国产一区二区三区在线播放| 日本高清成人免费播放| 欧美剧在线观看| 中文字幕在线亚洲三区| 男人日女人下面视频| 中文字幕乱码一区| 国产欧美激情视频| 天天躁日日躁狠狠躁av麻豆男男| 在线观看国产一级片| 精品久久久噜噜噜噜久久图片| 亚洲人成色77777| 香蕉网在线视频| 佐佐木明希电影| 亚洲女则毛耸耸bbw| 波多野结衣国产精品| 四虎精品一区二区| 玖玖爱这里只有精品| 久久久久亚洲AV成人| 日韩黄色在线视频| 欧美视频一二区| 捆绑变态av一区二区三区| 久草在线在线精品观看| 久久久激情视频| 精品日韩美女的视频高清| 欧美美女一区二区三区| 亚洲成人激情视频| 欧美极品第一页| 国模精品视频一区二区三区| 国产日本欧美一区二区三区在线| 国产一区二区高清不卡| 成年人网站国产| 亚洲制服中文字幕| 国产精品酒店视频| 国产后入清纯学生妹| 日韩黄色在线观看| av成人动漫在线观看| 亚洲已满18点击进入久久| 亚洲成年人在线播放| 欧美极品少妇与黑人| 亚洲综合色av| 国产天堂在线播放| 永久av免费网站| 欧美在线视频精品| 成人精品一区二区三区中文字幕| 亚洲一区二区在线免费看| 制服丝袜一区二区三区| 97婷婷大伊香蕉精品视频| 香蕉久久夜色| 久久久无码人妻精品无码| 久久久综合久久| 成人综合激情网| 欧美视频一二三区| 欧美黄色片在线观看| 女女百合国产免费网站| 中文字幕xxx| 一级二级三级视频| 成人欧美一区二区三区小说 | 欧美日韩在线观看一区二区| 欧美男人天堂网| 欧美三级 欧美一级| 国产精品久久婷婷| 国产欧美va欧美不卡在线| 欧美高清视频不卡网| 国产精品99免视看9| 在线观看18视频网站| 中文字幕5566| 日韩在线观看视频一区| 性做久久久久久免费观看| 亚洲国产精品va在线观看黑人| 精品国产一区二区三区四区vr| 亚洲三级在线视频| 成人免费公开视频| 一本久久精品一区二区| 国产精品亚洲网站| 国产高清av片| www.天堂av.com| 在线视频欧美区| 99视频网站| 免费看91的网站| 9久草视频在线视频精品| 亚洲视频在线观看| 男女啪啪免费视频网站| 日产欧产va高清| 亚洲一区二区综合| 91在线高清免费观看| 国精产品一区一区三区免费视频 | 中文字幕亚洲欧美| 国产 日韩 亚洲 欧美| 这里只有久久精品视频| 欧美视频国产精品| 高清免费日韩| 日本在线视频中文字幕| 亚洲图片欧美综合| 国产成人精品网站| 黑人巨大猛交丰满少妇| 国内成+人亚洲+欧美+综合在线| 日韩一区二区在线观看视频播放| 亚洲精品在线视频观看| 亚洲av综合一区| 日韩欧美高清在线| www.欧美黄色| 国产精品美女久久久久av爽| 色婷婷狠狠综合| 天堂av一区二区| 国产精品一二三四五区| 亚洲精品一区久久久久久| 国产精品88久久久久久妇女| 亚洲第一成人av| 中文字幕国产精品| 一个人看的视频www| 91视频xxxx| 91天堂在线视频| 五月天婷婷丁香| 欧美一卡二卡在线| 欧美污视频网站| 日本欧美一区二区在线观看| 日韩av在线播放资源| 超碰超碰在线观看| 国产日产欧美一区二区三区 | 成人午夜激情免费视频| 一区二区三区影视| 一区二区三区在线视频观看| 亚洲免费不卡| 首页欧美精品中文字幕| 欧美精品www| 久久久久无码国产精品不卡| 欧美日韩中文在线观看| 日韩小视频在线播放| 免费成人美女在线观看| 成人一区二区电影| 国产一区二区小视频| 中文字幕视频一区二区在线有码| 日本一卡二卡在线播放| 制服丝袜日韩国产| 中文字幕 欧美日韩| 4438国产精品一区二区| 在线视频精品一| 美国黑人一级大黄| 精品视频在线看| 亚洲 日韩 国产第一区| 国产成人av资源| 成人精品aaaa网站| 手机在线观看毛片| 久久夜色精品国产欧美乱| 久久久视频6r| 精品人伦一区二区三区蜜桃网站 | 人妻丰满熟妇av无码久久洗澡| 在线免费观看成人短视频| 九九九九九国产| 成人精品视频一区二区三区| 久久国产手机看片| 无套内谢的新婚少妇国语播放| 国产精品视频免费在线观看| 欧美一区二区三区久久久| 精品亚洲精品福利线在观看| 波多野结衣在线免费观看| 国产精品一区二区久激情瑜伽| 国产亚洲欧美另类一区二区三区| 免费观看日韩av| 欧美日韩一区二区视频在线 | 欧美日韩在线播放三区| 人妻精品久久久久中文字幕 | 午夜精品中文字幕| 国产亚洲一区二区三区在线观看| 蜜桃网站在线观看| 国产视频一区在线观看| 四虎永久在线精品无码视频| 一本久道中文字幕精品亚洲嫩| www.日本高清| 中文字幕欧美国内| 中文字幕亚洲精品一区| 国产成人亚洲综合91| 男女男精品网站| 大地资源第二页在线观看高清版| 一区二区三区欧美激情| 国产在线不卡av| 亚洲精品国产福利| 国产亚洲精品久久久久久打不开 | aaa人片在线| 91欧美精品午夜性色福利在线 | 日韩一区二区视频在线观看| 国产手机在线视频| 欧美中文字幕在线观看| 色香蕉在线视频| 国产一级不卡视频| 亚洲国产综合色| 永久免费未视频| 中文字幕成人在线| 老司机精品福利视频| 日韩影视精品| 五月婷婷综合在线| 波多野结衣福利| 98视频在线噜噜噜国产| 国产sm精品调教视频网站| 韩日精品中文字幕| 国产乱子伦视频一区二区三区| 51xx午夜影福利| 日韩视频一区二区三区| 中文天堂在线资源| 日韩欧美亚洲在线| 在线国产电影不卡| 精品国产乱码久久久久久鸭王1 | 成人激情在线观看| 久久亚洲综合色一区二区三区| 中文人妻一区二区三区| 色综合导航网站| 久久99精品一区二区三区三区| 久激情内射婷内射蜜桃| 国产午夜精品一区理论片飘花| 亚洲第一天堂在线观看| 欧美高清中文字幕| 亚洲网站在线播放| 乱精品一区字幕二区| 国产a级片免费观看| 久久亚洲一区二区三区四区五区高| 久久婷婷麻豆| 91网址在线观看精品| 91超碰中文字幕久久精品| 国产欧美一区二区精品婷婷| 国产高清视频免费在线观看| 成人精品水蜜桃| 午夜精品福利一区二区蜜股av| 日本韩国欧美中文字幕| 蜜臀av.com| 日韩视频免费看| 中文久久乱码一区二区| 开心激情五月网| 国产精品对白刺激久久久| 色悠悠久久综合| 无码精品黑人一区二区三区| 中文字幕永久免费| 国产精品久久视频| 一区二区三区鲁丝不卡| 亚洲影院一区二区三区| 日韩午夜视频在线观看| 色小说视频一区| 国产肉丝袜一区二区| 国产亚洲久一区二区| 天天爽天天爽夜夜爽| 91精品免费久久久久久久久| 在线播放91灌醉迷j高跟美女| 午夜影院免费视频| 欧美污视频网站| 国产综合第一页| 精品福利一二区| 丰满肥臀噗嗤啊x99av| 最近中文字幕免费视频| 国产精品夜夜夜爽张柏芝| 久久久久久久久久久免费 | 1000精品久久久久久久久| 成人毛片在线精品国产| 麻豆tv在线观看| 蜜桃传媒视频麻豆第一区免费观看 | 天堂中文视频在线| 国产免费一区二区三区| 日韩性xxxx爱| 亚洲国产乱码最新视频 | 亚洲综合欧美日韩| 欧美激情国内偷拍| 欧美日韩卡一卡二| 国产亚洲一二三区| 色综合视频在线| 国产午夜精品无码| 无码人妻一区二区三区精品视频| 一区二区不卡在线视频 午夜欧美不卡' | 无码少妇一区二区| 国产中文字幕乱人伦在线观看| 国产综合久久久久久| 日韩欧美不卡在线观看视频| |精品福利一区二区三区| 免费看黄网站在线观看| 国产真人真事毛片| 亚洲の无码国产の无码步美| 亚洲精品人成| 国产精品美女免费视频| 久久精品国产v日韩v亚洲| 欧美区视频在线观看| 国产精品毛片大码女人| 国产一区二区三区蝌蚪| www三级免费| 欧美aaa级片| 中文字幕1区2区| youjizzxxxx18| 男人的天堂狠狠干| 高清视频在线观看一区| 国产精品成人观看视频国产奇米|