久久伊人一区二区三区四区-久久伊人影视-久久伊人影院-久久伊人中文字幕-亚洲成在人色婷婷-亚洲大成色www永久网

千鋒教育-做有情懷、有良心、有品質的職業教育機構

手機站
千鋒教育

千鋒學習站 | 隨時隨地免費學

千鋒教育

掃一掃進入千鋒手機站

領取全套視頻
千鋒教育

關注千鋒學習站小程序
隨時隨地免費學習課程

當前位置:首頁  >  行業資訊  > JavaScript全解析——正則表達式

JavaScript全解析——正則表達式

來源:千鋒教育
發布人:zyh
時間: 2023-06-01 15:46:00 1685605560

  正則——RegExp

  ●正則也叫正則表達式,又名 “規則表達式”

  ●正則是JS中的數據類型, 是一個復雜數據類型

  ●由我們自己來書寫 “規則”,專門用來檢測 字符串 是否符合 “規則” 使用的

  ●我們使用一些特殊的字符或者符號定義一個 “規則公式”,然后用我們定義好的 “規則公式” 去檢測字符串是不是合格  

var reg = /\d+/
var str1 = '123'
var str2 = 'abc'
console.log(reg.test(str1)) // true
console.log(reg.test(str2)) // false

  ●上面的變量 reg 就是定制好的規則

  ●檢測 str1 這個字符串的時候,符合規則

  ●檢測 str2 這個字符串的時候,不符合規則

  創建一個正則表達式

  ●想制定 “規則”,必須要按照人家要求的方式來制定

  ●把一些字母和符號寫在 // 中間的東西,叫做正則表達式,比如 /abcdefg/

  ●創建正則表達式有兩個方式 字面量 和 構造函數創建

  字面量創建  

// 下面就是字面量創建一個正則表達式
var reg = /abcdefg/

  ●這個正則表達式就可以去檢測字符串了

  ●這個正則表達式的意義是字符串中的必須要包含'abcdefg'這個片段

  構造函數創建 

// 下面就是構造函數創建一個正則表達式
var reg = new RegExp('abcdefg')
console.log(reg) // /abcdefg/

  ●使用構造函數方式創建的和字面量創建的,得到的結果一樣

  兩種創建方式的區別

  ●語法不一樣

  ●書寫標識符的時候

  ○字面量方式直接書寫在正則的后面

  ○內置構造函數, 以第二個參數的方式傳遞

  ●拼接字符串

  ○字面量方式不接受拼接字符串

  ○內置構造函數方式, 可以拼接字符串

  ●基本元字符書寫

  ○字面量方式的時候, 直接書寫 \s\d\w

  ○內置構造函數書寫的時候, 需要書寫 \s\d\w 


<!DOCTYPE html>
<html lang="en">

<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>

<body>
<script>
//書寫標識符的區別
var reg = /abcd/gi
console.log(reg)
var reg2 = new RegExp('abcd', 'gi')
console.log(reg2)


// 拼接字符串的區別
var s = 'HH'
var s2 = 'MM'
// 不能解析變量
var reg = /(s|s2)/ //會報錯 不能解析變量
// var reg = /(HH|MM)/
console.log(reg)
// 因為第一個參數就是需要你以 字符串 的形式傳遞 所以可以拼接字符串
var reg2 = new RegExp('(' + s + '|' + s2 + ')')
console.log(reg2)


// 基本元字符的書寫的區別
var reg = /\s\d\w/
console.log(reg)

var reg2 = new RegExp('\\s\\d\\w')
console.log(reg2)
</script>
</body>

</html>

  正則表達式的方法

  ●正則提供了一些方法給我們使用

  ●用來檢測和捕獲字符串中的內容的

  test()方法——匹配

  ●作用:test方法是用來檢測字符串是否符合我們正則的標準

  ●語法: 正則.test(字符串)

  ●返回值: boolean

  ○如果該字符串符合正則的規則, 那么就是 true

  ○如果該字符串不符合正則的規則, 那么就是 false 

console.log(/\d+/.test('123')) // true
console.log(/\d+/.test('abc')) // false

  exec()方法——捕獲

  ●作用:exec方法是把字符串中滿足條件的內容捕獲出來

  ●語法: 正則.exec(字符串)

  ●返回值: 把字符串中符合正則要求的第一項以及一些其他信息,以數組的形式返回

  ○原始字符串中沒有符合正則要求的字符串片段

  ■null

  ○原始字符串中有符合正則要求的片段

  ■正則沒有 () 也沒有 全局標識符g

  ●返回值是一個數組

  ●索引 0 是從字符串中捕獲出來的滿足正則條件的第一個內容

  ●注意: 不管捕獲多少次, 每次都是從原始字符串的索引 0 開始檢索

  ■正則有全局標識符 g

  ●返回值是一個數組

  ●索引 0 是從字符串中捕獲出來的滿足正則條件的第一個內容

  ●注意: 第二次捕獲是從第一次的結束位置開始向后查詢, 直到最后捕獲不到為止, 再下一次的時候, 又從字符串的 索引0 開始檢索

  ■有 ()

  ●返回的是一個數組

  ●索引 0 是從字符串中捕獲出來的滿足正則條件的第一個內容

  ●從索引 1 開始, 依次是每一個小括號的單獨內容

  ●注意: 按照小括號的開始標志, 來數是第幾個小括號

<!DOCTYPE html>
<html lang="en">

<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>

<body>
<script>
//1. 沒有符合要求的片段
var str = 'vgfdrtyuijkhvgfrtyu'
var reg = /\d{3}/
var res = reg.exec(str)
console.log(res)


//2. 有符合要求的片段
//2-1. 沒有 () 沒有 g
var str = 'tfyu123gvh456gfh789gyhj'
var reg = /\d{3}/
var res = reg.exec(str)
console.log(res)

//2-2. 有全局標識符 g
var str = 'tfyu123gvh456gfh789gyhj'
var reg = /\d{3}/g
var res = reg.exec(str)
console.log(res)
console.log(reg.exec(str))
console.log(reg.exec(str))
console.log(reg.exec(str))
console.log(reg.exec(str))

//2-3. 有 ()
var str = '11010820030223001x'
var reg = /(\d{2})(\d{2})(\d{2})((\d{4})(\d{2})(\d{2}))\d{2}(\d)(?:\d|x)/
var res = reg.exec(str)
console.log(res)
</script>
</body>

</html>

  ●擴展: () 有兩個意義

  ○一個整體

  ○單獨捕獲

  ○如果你想只使用一個意義, 整體的所用, 不想在捕獲的時候單獨捕獲出來

  ○你可以寫成 (?:)表示匹配但不捕獲 

// 單獨捕獲
var reg = /(\d{2})(\d{2})(\d{2})(\d{4})(\d{2})(\d{2})\d{2}(\d)(\d|x)/
var res = reg.exec('13072220041010301x')
console.log(res);

  正則表達式里面的符號

  ●知道了怎么創建一個正則表達式以后,我們就來詳細的說一下正則表達式里面涉及到的一些符號了

  元字符

  基本元字符

  ●. : 匹配非換行的任意字符 表示字符串中至少要有一個非換行的內容

  ●\ : 轉譯符號,把有意義的 符號 轉換成沒有意義的 字符,把沒有意義的 字符 轉換成有意義的 符號

  ●\s : 匹配空白字符(空格/縮進/制表符/...)表示字符串中至少包含一位 空白 內容

  ●\S : 匹配非空白字符

  ●\d : 匹配數字 表示字符串中至少包含一位 數字(0-9)

  ●\D : 匹配非數字 表示字符串中至少包含一位 非數字 內容

  ●\w : 匹配數字字母下劃線 表示 一位 數字(0-9)字母(a-zA-Z)下劃線(_) 中的任意一個

  ●\W : 匹配非數字字母下劃線 表示 一位 非數字字母下劃線 中的任意一個

  ●有了元字符我們就可以簡單的制定一些規則了 

// 基本元字符
// \d
// 表示驗證的字符串內必須包含一位數字
var reg = /\d/
console.log(reg.test('sfdgdfgfdhfgh'));
console.log(reg.test('sfdgdfgfg4dhfgh7'));
console.log(reg.test('123sfdgdfgfg4dhfgh7'));
// \D
// 表示驗證的字符串中必須包含一位非數字
var reg = /\D/
console.log(reg.test('45613165465'));
console.log(reg.test('45613 165465'));
console.log(reg.test('45613d165465'));
console.log(reg.test('45613%165465'));
// \s
// 表示驗證的字符串中必須要包含一位空白內容
var reg = /\s/
console.log(reg.test('sgsdfhfgh'));
console.log(reg.test('sgsdf hfgh'));
console.log(reg.test('sgsdf hfgh'));
console.log(reg.test(`sdgs
dfg`
));
// \S
// 表示驗證的字符串中必須要包含一位非空白內容
var reg = /\S/
console.log(reg.test(' '));
console.log(reg.test(' d '));
console.log(reg.test(' # '));
console.log(reg.test(' . '));
// \w
// 表示驗證的字符船串中必須要包含一位數字字母和下劃線
var reg = /\w/
console.log(reg.test('@#%#$%&^*&(*'));
console.log(reg.test('@#%#$%&^2*&(*'));
console.log(reg.test('@#%#$%&^b*&(*'));
console.log(reg.test('@#%#$%&^_*&(*'));
// \W
// 表示驗證的字符串中必須要包含一位非數字字母和下劃線
var reg = /\W/
console.log(reg.test('asgd353454__'));
console.log(reg.test('asgd353 454__'));
console.log(reg.test('asgd353$454__'));
// .
// 表示驗證的字符串中必須要包含一位非換行以外的內容
var reg = /./
console.log(reg.test('\n'));
console.log(reg.test('\ns'));
console.log(reg.test('\n '));
console.log(reg.test('\n@'));
// \
// 表示把有意義的點轉成了沒有意義的點
var reg = /\d\.\d/
console.log(reg.test('1.5'));
console.log(reg.test('1#5'));

  限定符

  注意: 一個限定符只能修飾符號前面的一個內容的出現次數

  ●* : 前一個內容重復至少 0 次,也就是可以出現 0 ~ 正無窮 次

  ●+ : 前一個內容重復至少 1 次,也就是可以出現 1 ~ 正無窮 次

  ●? : 前一個內容重復 0 或者 1 次,也就是可以出現 0 ~ 1 次

  ●{n} : 前一個內容重復 n 次,也就是必須出現 n 次

  ●{n,} : 前一個內容至少出現 n 次,也就是出現 n ~ 正無窮 次

  ●{n,m} : 前一個內容至少出現 n 次至多出現 m 次,也就是出現 n ~ m 次

  ●限定符是配合元字符使用的  

// 下面正則表示驗證數字出現 0 ~ 正無窮次都可以
var reg = /\d*/
var str = 'abc'
var str2 = 'abc1'
var str3 = 'abc123'
console.log(reg.test(str)) // true
console.log(reg.test(str2)) // true
console.log(reg.test(str3)) // true

// 下面正則表示驗證數字出現 1 ~ 正無窮次都可以
var reg = /\d+/
var str = 'abc'
var str2 = 'abc1'
var str3 = 'abc123'
console.log(reg.test(str)) // false
console.log(reg.test(str2)) // true
console.log(reg.test(str3)) // true

// 下面正則表示驗證數字出現 0 ~ 1 次都可以
var reg = /\d?/
var str = 'abc'
var str2 = 'abc1'
console.log(reg.test(str)) // true
console.log(reg.test(str2)) // true

// 下面正則表示驗證數字必須出現 3 次
var reg = /\d{3}/
var str = 'abc'
var str2 = 'abc1'
var str3 = 'abc123'
console.log(reg.test(str)) // false
console.log(reg.test(str2)) // false
console.log(reg.test(str3)) // true

// 下面正則表示驗證數字出現 3 ~ 正無窮次
var reg = /\d{3,}/
var str = 'abc'
var str2 = 'abc1'
var str3 = 'abc123'
var str4 = 'abcd1234567'
console.log(reg.test(str)) // false
console.log(reg.test(str2)) // false
console.log(reg.test(str3)) // true
console.log(reg.test(str4)) // true

// 下面正則表示驗證數字只能出現 3 ~ 5 次
var reg = /\d{3,5}/
var str = 'abc'
var str2 = 'abc1'
var str3 = 'abc123'
var str4 = 'abc12345'
console.log(reg.test(str)) // false
console.log(reg.test(str2)) // false
console.log(reg.test(str3)) // true
console.log(reg.test(str4)) // true

  邊界符

  ●^ : 表示開頭

  ●$ : 表示結尾

  ●邊界符是限定字符串的開始和結束的 


// 下面表示從開頭到結尾只能有數字,并且出現 3 ~ 5 次
var reg = /^\d{3,5}$/
var str = 'abc'
var str2 = 'abc123'
var str3 = '1'
var str4 = '1234567'
var str5 = '123'
var str6 = '12345'
console.log(reg.test(str)) // false
console.log(reg.test(str2)) // false
console.log(reg.test(str3)) // false
console.log(reg.test(str4)) // false
console.log(reg.test(str5)) // true
console.log(reg.test(str6)) // true

  特殊符號

  ●() : 限定一組元素

  ●[] : 字符集合,表示寫在 [] 里面的任意一個都行

  ●[^] : 反字符集合,表示寫在 [^] 里面之外的任意一個都行

  ●- : 范圍,比如 a-z 表示從字母 a 到字母 z 都可以

  ●| : 或,正則里面的或 a|b 表示字母 a 或者 b 都可以

  ●現在我們就可以把若干符號組合在一起使用了  


// ()
var reg = /^(abc){2}$/
console.log(reg.test('abcabc'));
console.log(reg.test('aabbcc'));
console.log(reg.test('abcc'));

// |
var reg = /^abc|def$/
console.log(reg.test('abcabc'));
console.log(reg.test('abc'));
console.log(reg.test('def'));
console.log(reg.test('abcdef'));
console.log(reg.test('defdef'));
console.log(reg.test('sddhdggfhdgsf'));

var reg = /^(abc|def)$/
console.log(reg.test('abcabc'));
console.log(reg.test('abcdef'));
console.log(reg.test('defdef'));
console.log(reg.test('abcsddhdggfhdgsf'));
console.log(reg.test('sddhdggfhdgsdef'));
console.log(reg.test('abc'));
console.log(reg.test('def'));

// []
var reg = /^[abcd]$/
console.log(reg.test('a'));
console.log(reg.test('b'));
console.log(reg.test('c'));
console.log(reg.test('d'));
console.log(reg.test('e'));

// [^]

var reg = /^[^abcd]$/
console.log(reg.test('a'));
console.log(reg.test('b'));
console.log(reg.test('c'));
console.log(reg.test('d'));
console.log(reg.test('e'));

// -
var reg = /^[0-9]$/
console.log(reg.test('01'));
console.log(reg.test('1'));
console.log(reg.test('2'));
console.log(reg.test('3'));
console.log(reg.test('4'));
console.log(reg.test('5'));
console.log(reg.test('6'));
console.log(reg.test('7'));
console.log(reg.test('8'));
console.log(reg.test('9'));

  標識符(修飾符)

  ●書寫在正則表達式的外面, 專門用來修飾整個正則表達式的符號

  ●i :ignore的簡寫 表示忽略大小寫

  ○這個 i 是寫在正則的最后面的

  ○/\w/i

  ○就是在正則匹配的時候不去區分大小寫

  ●g : global的簡寫 表示全局匹配

  ○這個 g 是寫在正則的最后面的

  ○/\w/g

  ○就是全局匹配字母數字下劃線  


var reg = /^[a-z]$/i
console.log(reg.test('s'));
console.log(reg.test('g'));
console.log(reg.test('y'));
console.log(reg.test('u'));
console.log(reg.test('A'));

// 有全局修飾符 g
var str = 'sda123fdhm456fnbvb789gdghj345khmgn666bxcvxb'
var reg = /\d{3}/g
console.log(reg.exec(str));
console.log(reg.exec(str));
console.log(reg.exec(str));
console.log(reg.exec(str));
console.log(reg.exec(str));
console.log(reg.exec(str));
console.log(reg.exec(str));

  字符串和正則合用的方法

  ●字符串中有一些方法也是可以和正則一起使用的

  search

  ●作用:search 是查找字符串中是否有滿足正則條件的內容

  ●語法:

  ○字符串.search(正則)

  ○字符串.search(字符串片段)

  ●返回值 : 有的話返回開始索引,沒有返回 -1  


var reg = /\d{3}/
var str = 'hello123'
var str2 = 'hello'
console.log(str.search(reg)) // 5
console.log(str2.search(reg)) // -1

  match

  ●作用:match 找到字符串中符合正則條件的內容返回

  ●語法:

  ○字符串.match(正則)

  ○字符串.match(字符串片段)

  ●返回值 :

  ○沒有標示符 g 的時候,是和 exec 方法一樣

  ○有標示符 g 的時候,是返回一個數組,里面是匹配到的每一項  

var reg = /\d{3}/
var str = 'hello123world456'
var str2 = 'hello'
console.log(str.match(reg))
// ["123", index: 5, input: "hello123wor456", groups: undefined]
console.log(str2.match(reg)) // null


var reg = /\d{3}/g
var str = 'hello123world456'
var str2 = 'hello'
console.log(str.match(reg))
// ["123", "456"]
console.log(str2.match(reg)) // null

  replace

  ●作用:replace 是將字符串中滿足正則條件的字符串替換掉

  ●語法:

  ○字符串.replace('換下字符', '換上字符')

  ○字符串.replace(正則表達式, '換上字符')

  ●返回值 : 替換后的字符串

  ○當你的第一個參數傳遞字符串的時候, 只能替換一個

  ○當你的第一個參數傳遞正則表達式的時候, 只能替換一個

  ○但是如果你的正則表達式有全局標識符 g, 那么有多少替換多少 

<script>
var str = 'fctyHHguHHijHHknHHjgHHhfMMctMMdrMMf'
console.log(str) //fctyHHguHHijHHknHHjgHHhfMMctMMdrMMf

var r1 = str.replace('HH', '**')
console.log(r1) //fcty**guHHijHHknHHjgHHhfMMctMMdrMMf

var r2 = str.replace(/HH/, '**')
console.log(r2) //fcty**guHHijHHknHHjgHHhfMMctMMdrMMf

var r3 = str.replace(/HH/g, '**')
console.log(r3) //fcty**gu**ij**kn**jg**hfMMctMMdrMMf
</script>

  案例——密碼強度校驗

<!DOCTYPE html>
<html lang="en">

<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<style>
* {
margin: 0;
padding: 0;
}

div {
width: 300px;
height: 200px;
border: 10px solid pink;
margin: 20px auto;
padding: 20px;
}

input {
width: 100%;
height: 50px;
font-size: 24px;
padding-left: 20px;
box-sizing: border-box;
}

p {
width: 100%;
height: 30px;
display: flex;
justify-content: space-between;
margin-top: 20px;
}

p>span {
width: 30%;
height: 100%;
display: flex;
justify-content: center;
align-items: center;
background-color: #ccc;
color: #fff;
font-size: 24px;
}

p>span:nth-child(1).active {
background-color: red;
}

p>span:nth-child(2).active {
background-color: orange;
}

p>span:nth-child(3).active {
background-color: green;
}
</style>
</head>

<body>

<div>
<input type="text">
<p>
<span></span>
<span></span>
<span></span>
</p>
</div>

<script>

// 密碼強度校驗
// + 規則:
// => 密碼的規則: 數字 字母 符號(@#%&)
// => 強度的規則:
// -> 弱: 有一類
// -> 中: 有兩類
// -> 強: 全包含

// 獲取元素
var inp = document.querySelector('input')
var spans = document.querySelectorAll('span')

// 準備正則
// 只要包含一位數字就可以
var r1 = /\d/
// 只要包含一位字母就可以
var r2 = /[a-z]/i
// 只要包含一位符號就可以
var r3 = /[@#%&]/

// 1. 給 inp 綁定 input 事件
// 隨著輸入或者刪除內容實時觸發
inp.oninput = function() {
// 2. 拿到 inp 內輸入的內容
var text = inp.value

// 3. 準備一個表示級別的變量, 默認是 0
var level = 0

// 3-1. 依次使用正則校驗
if (r1.test(text)) level++
if (r2.test(text)) level++
if (r3.test(text)) level++

// 在每一次添加類型之前, 給所有 span 清除掉類名
for (var i = 0; i < spans.length; i++) {
spans[i].classList.remove('active')
if (i < level) spans[i].classList.add('active')
}

}
</script>
</body>

</html>

  案例——表單驗證

<!DOCTYPE html>
<html lang="en">

<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<style>
form {
width: 400px;
border: 10px solid pink;
padding: 20px;
}

label {
display: block;
height: 80px;
position: relative;
}

input {
height: 30px;
font-size: 24px;
padding-left: 20px;
}

label>span {
position: absolute;
left: 0;
top: 35px;
font-size: 20px;
color: red;
display: none;
}
</style>
</head>

<body>

<form>
<label>
用戶名: <input class="username" type="text">
<span>請按照規則填寫用戶名</span>
</label>
<label>
密碼: <input class="password" type="text">
<span>請按照規則填寫密碼</span>
</label>
<label>
手機號: <input class="phone" type="text">
<span>請按照規則填寫手機號</span>
</label>
<label>
郵箱: <input class="email" type="text">
<span>請按照規則填寫郵箱</span>
</label>
<input type="button" value="完善資料">
</form>

<script>
// 方案2: 統一驗證
// 1. 給每一個 input 起一個單獨的類名(或者標識, 用來區分)
// 2. 準備正則, 以對象的形式準備正則, 對象的 鍵就使用 文本框的獨立標識, 值就使用 正則
// 當你的文本框 className === 'username' 的時候, 就使用 regObj 內的一個叫做 username 對應的正則去驗證
var regObj = {
username: /^[0-9a-z]\w{5,11}$/i,
password: /^\w{6,12}$/,
phone: /^\d{11}$/,
email: /^[0-9a-zA-Z]\w{5,11}@(qq|163|sina)\.(com|cn)$/
}

// 3. 獲取到所有的文本框
var inps = document.querySelectorAll('form input')
// 3-2. 給每一個 input 綁定 表單輸入 事件
inps.forEach(function(item) {
item.oninput = function() {
// 4-1. 拿到你正在輸入的這個 input 文本框內的文本
var text = item.value
// 4-2. 拿到驗證該文本框需要使用的正則
var reg = regObj[item.className]
// 4-3. 拿到應該顯示的那個對應的 span 標簽
var span = item.nextElementSibling

// 4-4. 操作顯示和隱藏
span.style.display = reg.test(text) ? 'none' : 'block'
// if (reg.test(text)) {
// span.style.display = 'none'
// } else {
// span.style.display = 'block'
// }
}
})
</script>
</body>

</html>

  正則預查(擴展)

  正向預查

  ●正向肯定預查:(?=)

  ●正向否定預查:(?!)

  負向預查

  ●負向肯定預查:(?<=)

  ●負向否定預查:(?<!) 

var str = 'windows2012windows2000windowsXPwindowsVistawindows98windows'
// 1. 正向肯定預查
// 需求: 我需要的是 windows, 但是是后面帶有數字的 widnows
// var reg = /windows(?=\d+)/g
// 2. 正向否定預查
// 需求: 我需要的是 windows, 但是后面不是數字的 windows
// var reg = /windows(?!\d+)/g
// 3. 負向肯定預查
// 需求: 我需要的是 windows, 但是前面是數字的 windows
var reg = /(?<=\d+)windows/g
// 4. 負向否定預查
// 需求: 我需要的是 windows, 但是前面不是數字的 windows
var reg = /(?<!\d+)windows/g

聲明:本站稿件版權均屬千鋒教育所有,未經許可不得擅自轉載。
10年以上業內強師集結,手把手帶你蛻變精英
請您保持通訊暢通,專屬學習老師24小時內將與您1V1溝通
免費領取
今日已有369人領取成功
劉同學 138****2860 剛剛成功領取
王同學 131****2015 剛剛成功領取
張同學 133****4652 剛剛成功領取
李同學 135****8607 剛剛成功領取
楊同學 132****5667 剛剛成功領取
岳同學 134****6652 剛剛成功領取
梁同學 157****2950 剛剛成功領取
劉同學 189****1015 剛剛成功領取
張同學 155****4678 剛剛成功領取
鄒同學 139****2907 剛剛成功領取
董同學 138****2867 剛剛成功領取
周同學 136****3602 剛剛成功領取
相關推薦HOT
開班信息
北京校區
  • 北京校區
  • 大連校區
  • 廣州校區
  • 成都校區
  • 杭州校區
  • 長沙校區
  • 合肥校區
  • 南京校區
  • 上海校區
  • 深圳校區
  • 武漢校區
  • 鄭州校區
  • 西安校區
  • 青島校區
  • 重慶校區
  • 太原校區
  • 沈陽校區
  • 南昌校區
  • 哈爾濱校區
主站蜘蛛池模板: 车内挺进尤物少妇紧窄| 啊哈~给我~啊(H)| 国产精品午夜福利不卡| 国产AV无码专区亚洲AV麻豆丫| 狠狠色狠狠色综合久久| АⅤ天堂中文在线网官网| 免费观看A级毛片视频| 国产成人亚洲精品青草| 小SAO货都湿掉奶头好硬男女| 午夜福利1000集合集92| 国产精品亚洲第一区焦香味 | 伊人久久大香线蕉AV色婷婷色| 草莓 丝瓜 香蕉 向日葵 榴莲| 妞干网在线视频免费观看| 十八禁无遮无拦视频免费| 五十老熟女高潮嗷嗷叫| 年级老师的滋味4| 免费看成人AV片| 亚洲AV综合色区无码二区偷拍| 八戒八戒手机在线高清观看WWW| 国产69久久精品成人看| 中文无码制服丝袜人妻AV| 中国CHINAGARY武警网站| 亚洲国产精品无码第一区二区三区| 草莓影视在线观看视频| 欧美午夜精品一区二区蜜桃 | 无线乱码A区B区C区| 西西人体午夜大胆无码视频| 巨爆乳寡妇中文在线观看| 无码一区在线视频| 韩国三级大乳在线观看| 亚洲AV日韩AV永久无码水密桃 | 粗大猛烈进出高潮视频| 无码99久热只有精品视频在线观| 岛国AV动作片免费观看| 国产果冻豆传媒麻婆精东影视| 成 人 综合 亚洲另类| 精品日本一区二区三区免费| 天美传媒国产电视推荐| 国产亚洲精品无码成人| 女人脱精光让人桶爽了| 久拍国产在线观看| 成人无码AⅤ久久精品国产传媒| 好男人好资源在线影视官网| 豆奶视频在线观看免费高清版| 哦┅┅快┅┅用力啊┅┅在线观看 | 久久精品伊人一区二区三区| 男友把舌头都伸进我的嘴巴里了 | 差差差软件大全APP推荐免费| 豆奶视频在线观看免费高清版| 精品人妻一区二区三区四区九九 | 亚洲 熟 图片 小说 乱 妇| 国产日韩未满十八禁止观看| 韩国19禁床震无遮掩免费 | 麻豆成人精品国产免费| 国产精品视频色拍拍| 成人网站亚洲二区乱码| 国产免费看MV大片的软件| 粉嫩av观看成人网站| 窝窝人体色WWW聚色窝| 永久免费的啪啪免费网址| 女人丝不挂的正面裸体| 欧美又粗又长XXXXBBBB疯| 日韩精品一区二区三区中文| А√天堂 地址 在线| 极品少妇高潮到爽| 成年黄网站18禁免费观看一区| 嫩草研究院久久久精品| 男生女生差差差轮滑免费| 挺进邻居丰满少妇的身体| 在厨房被C到高潮A毛片奶水| 成年女人午夜毛片免费视频| 玩爽少妇人妻系列无码| А√天堂资源地址在线下载| 短篇公交车高H肉辣全集目录| 波多野结衣AV高清中文| 宝贝腿开大一点你真湿H| 产高清在线精品一区二区三区| 高中生被C到爽哭视频| 亚洲AV无码国产精品夜色午夜 | 小浪货水多奶大被领导| 色狠狠久久AV北条麻妃| 欧美国产SE综合| 成人黄网站高清免费视频| 欧美精品亚洲精品日韩传电影| 亚洲AV无码成人精品涩涩| 欧美丰满熟妇人妻兽交视频| 无码播放一区二区三区| 高潮喷视频在线无码| 天天影视网色香欲综合网| 粗大从后面狠狠贯穿H| 天天澡夜夜澡人人澡| 国产成人精品综合久久久| 人妻AV无码专区| 亚洲人女屁股眼HD| 高清熟女国产一区二区三区| 陈冠希实干阿娇13分钟| 国产AV天堂无码一区二区三区| 少妇粉嫩小泬喷水视频在线观看| 洗澡被公强玩好舒服肉欲小说| 成人免费无码H黄网站WWW| 制服 丝袜 亚洲 中文 综合| 年级老师的滋味4| 岳的奶大又白又紧| 永久免费观看美女裸体的网站| 精品视频无码一区二区三区| 亚洲精品无码成人| 日本久久久久亚洲中字幕| 一本大道色卡1卡2卡3| 亚洲综合国产一区二区三区| 人妻少妇久久久久久97人妻| 内射中出无码护士在线| 久久久久久精品免费免费R| 草莓视频免费观看| 日本最新免费二区三区| 狠狠干2015最新版| 免费无码黄动漫在线观看| 国产男女猛烈无遮挡免费视频| 精品无码人妻一区二区三区四| 亚洲AV无码国产精品夜色午夜| 性少妇VIDEOXXX欧美69| 久久久G0G0午夜无码精品| 成人黄网站片免费视频| 欧美xxxxx久久短视频| 挺进绝色老师的紧窄小肉 | 国产男男猛烈无遮挡A片小说| 日本十八禁免费看污网站| 亚洲AV最新天堂网址| 粉嫩AV无码一区二区三区| 亚洲欧美另类在线观看| 人人妻人人澡人人爽人人DVD| 国产精品无码综合区| 人人妻人人澡人人爽人人精直播| 蜜桃AV秘 无码一区二区三区| 在线精品自偷自拍无码中文| 国产精品久久久久久久久岛| 久久无码AV中文出轨人妻| 欧美性猛交XXXX乱大交丰满| 亚洲精品无码专区| 中文人妻无码一区二区三区| 国产V亚洲V天堂A无码久久蜜桃 | 我半夜摸妺妺的奶摸到高潮| 制服 丝袜 亚洲 中文 综合| 久久国产精品免费一区| 欧美大胆A级视频免费| 久久99精品久久只有精品| 国产精品99久久久久| Z〇ZOZ〇女人另类ZOZ〇| 丰满少妇发泄14P| 无码口爆内射颜射后入| 国产午夜精华无码网站| 国产成人亚洲综合无码99| 高清FREESEXMOVIES性TV出水| 亚洲已满18点击进入在线看片| 色婷婷成人综合激情免费视频| 久久99精品久久久久久国产| 他将头埋进双腿间吮小核故事| 成人午夜福利视频| 精品影片在线观看的网站| XXXX娇小10另类| 国产AV天堂无码一区二区三区| 成人无遮挡裸免费视频在线观看| 久久6久久66热这里只是精品| 欧美性猛交一区二区| 挺进绝色老师的紧窄小肉| 亚洲AV无码一区二区三区网站| 精品久久久久久无码人妻蜜桃 | 国产成人年无码AV片在线观看 | 小雪被老汉玩遍各种方式| 东北往事之黑道风云20年第二部| 乳荡的小痍子免费播放| 日本丰满护士爆乳XXXX无遮挡| 久久寂寞少妇成人内射| 亚洲AV无码片一区二区三区| 色婷婷久久综合中文久久蜜桃AV| 色偷偷人人澡人人爽人人模| 国产精品V欧美精品∨日韩| 丰满人妻被公侵犯完整版| 锕锕锕锕锕锕锕好疼免费视频| 亚洲AV无码久久| 狠狠躁夜夜躁人人爽碰AV| 国色天香在线观看全集免费播放| 成人麻豆精品激情视频在线观看| 天天玩天天玩天天玩| 国产韩国精品一区二区三区| 日韩无码视频二区| 成人动漫在线观看| 国精产品一二三区传媒公司 | 激情伊人五月天久久综合| 国产精品成人一区二区不卡| 又粗又黄又爽视频免费看 | 国产成人精品一区二区视频| 色欲网久久久久久久久久久久久久 | 欧美日韩免费观看| 午夜夫妻试看120国产| 国产猛烈高潮尖叫视频免费 | 人妻少妇久久中文字幕| 亚洲国产精品嫩草影院久久| 娇喘连连抽搐高潮小说| 免费下载破解看片APP的软件| 久久久WWW成人免费看片| 亚洲AV无码成人精品区明星换面| 宝贝你的奶好大我想吃| 狠狠色噜噜狠狠亚洲AV| 久久久久久精品免费免费自慰| 亚洲AV无码乱码国产精品| 一本大道色卡1卡2卡3| 成人性生交大片免费看中文| 极品少妇的粉嫩小泬看片| 人妻精油按摩BD高清中文字幕 | 饭桌上故意张开腿让公H视频| 欧美成人免费全部观看| 久久久久久久精品2| 国产精品边做奶水狂喷无码| 国产FREEXXXX性麻豆| 日韩精品无码一本二本三本| 区产品乱码芒果精品P站| 男人GAY自慰吞精网站| 在线精品自偷自拍无码中文| 色哟哟精品网站在线观看| 伊人久久精品无码麻豆一区| 久久无码一区二区| 中文字幕久久波多野结衣AV| 嫩小BBB揉BBB揉BBBB| 被黑人捅入子宫射精小说| 亚洲综合国产一区二区三区| 麻豆传播媒体APP官网在线观看| 中文无码不卡中文字幕 | 国产福利在线 | 传媒| 白嫩少妇激情无码| 成人午夜福利视频| 国产精品亚洲第一区焦香味| 国产CHINASEX对白VID| 寂寞视频一对一视频APP| 女人被男人爽到呻吟的视频| 在线精品自偷自拍无码中文| 成人无码区免费AⅤ片| 熟女少妇内射日韩亚洲| 成人做受120视频试看| 丰满的少妇愉情HD高清免费| 欧美XXXXX高潮喷水麻豆| 亚洲精品乱码久久久久久按摩| А√天堂 地址 在线| 国产精品色内内在线播放| 少妇自慰喷AV免费网站| 小SB是不是想被C了| 人妻少妇AV中文字幕乱码| 脱了老师内裤猛烈进入的软件| 在线麻豆精东9制片厂AV影现网| 宝贝对着镜子CAO好不好 | 草草永久地址发布页①| 波多野结衣迅雷种子| 污污污污污污网站| 狠狠五月激情六月丁香| 亚洲AV中文无码字幕色本草 | 少妇高潮惨叫喷水在线观看| 国精产品一区二区三区有限| 草草永久地址发布页①| 粉嫩av.一区二区三区免费| 日韩激情无码免费毛片| 亚洲AV丰满熟妇在线播放| 国产精彩乱子真实视频| 黑人性狂欢在线播放| 亚洲AV无码一区二区三区国产| 国产精品内射后入合集| 国产成人一区二区三区APP | 亚洲AV午夜成人片动漫番| 国产精品爱久久久久久久小说| 内射人妻无码色AV无码| 久久久久久精品国产亚洲AV麻豆| 内射白浆一区二区在线观看| 精品一区二区三区不卡少妇av | 全彩漫画口工18禁无遮H| 欧美美女视频熟女一区二区| 成人亚洲欧美成ΑⅤ人在线观看| 国产男男激情VIDEOSGAY| 寂寞视频一对一视频APP| 好男人好资源电影在线播放| 成人看片黄APP免费看软件 | 亚洲无AV码一区二区三区| 豆国产97在线 | 韩国| 忘忧草影视WWW在线播放网| 亲近相奷对白中文字幕| 岳丰满多毛的大隂户| 放学后的特殊教育桃子移植| 亚洲AV午夜成人片精品| 国产精品导航一区二区| 激情五月丁香六月综合AVXXXX| 日韩AV影院在线观看| 国产精品亚洲片在线| 国产精品亚洲综合色区韩国| 国产欧美日韩专区发布| 超碰CAO已满18进入| 丰满人妻一区二区三区无码AV| 多毛BGMBGMBGM胖在线| 亚洲VA欧美VA国产VA综合| 欧美 丝袜 自拍 制服 另类 | 久久亚洲AV永久无码精品| 强制高潮18XXXXHD日韩| 男阳茎进女阳道啪啪| 国产69久久精品成人看| 无码熟妇人妻AV在线影片免费| 狠狠躁天天躁中文字幕| 亚洲精品无码AV中文字幕| 免费AV片在线观看网址| 暗交小拗女一区二区| 久久久久久精品人妻免费网站| 超薄肉色丝袜一区二区| 久久66热人妻偷产精品9| 色婷婷粉嫩AV精品综合在线| 国产亚洲欧美日韩亚洲中文色 | 吃瓜爆料黑料不打烊| 欧美裸体XXXX| 嫩草院一区二区乱码| 人妻少妇AV中文字幕乱码| 在线播放亚洲第一字幕| 国产超碰人人爽人人做人人添| 久久久久亚洲精品男人的天堂| 熟妇人妻无乱码中文字幕| 伊人久久大香线蕉AV网禁呦| 成人毛片女人18女人免费| 国产成人年无码AV片在线观看| 国产精品三级一区二区| 中文字幕无码毛片免费看| 超清无码熟妇人妻AV在线电影 | 久久夜色撩人精品国产小说| 又粗又大又硬又爽的少妇毛片| 真实的国产乱ⅩXXX66小说| 性欧美丰满熟妇XXXX性久久久| 欧美性饥渴少妇XXXⅩOOOO| 狠狠躁夜夜躁人人爽超碰97香蕉 | 波多野结衣AV高清中文| 伊人久久大香线蕉AV网禁呦| 色婷婷成人综合激情免费视频| 精品熟女AV少妇免费久久自慰| 亚洲 日韩 丝袜 熟女 变态| 人妻中文字幕制服丝袜| 成人免费无码大片A毛片直播| 亚洲国产精品久久久久爰色欲| 韩国青草无码自慰直播专区| 天堂AV亚洲ITV在线AⅤ| 丰满人妻熟妇乱又伦精品视| 色欲AV浪潮AV蜜臀AⅤ| ZOOM另一类ZZO0| 成熟丰满熟妇强av无码区| 蜜桃AV秘 无码一区二区三区| 孰妇XXXXXX的性生话| 小荡货奶真大水多好紧视频| 公车掀起老师裙子进入在线| 国产精品女上位好爽在线 | 老熟妇高潮一区二区三区网| 成 人 A V免费视频在线观看| 国产一区二区在线视频| 精品熟女AV少妇免费久久自慰 | 久久精品亚洲精品无码金尊| 亚洲伊人成无码综合影院| 在线播放亚洲第一字幕| 丰满圆润大胸在线| 亚洲日本一本DVD高清| 少妇特殊按摩高潮爽翻天| 性一交一乱一色一视频| 女儿的朋友6中汉字| 老熟妇仑乱一区二区视頻| 趁夫不在给给公侵犯了| 亚洲AV无码专区在线观看成人 | 亚洲无AV码一区二区三区| 亚洲AV无码一区二区密桃精品| 日本一道综合久久AⅤ久久| 国产男男猛烈无遮挡A片小说| 真实国产老熟女粗口对白| 久久99精品久久久久婷婷| 无码国产成人午夜电影在线观看| 精品少妇人妻Av免费久久农村| YIN荡到骨子里的SAO货| 国产精品亚洲片在线| 男女乱婬免费视频黑人| 日韩AV无码久久精品免费| 主人给我戴上奶牛榨乳器调教| 天天澡夜夜澡人人澡| 女刑警被两个黑人挺进| 少妇厨房愉情理伦片BD在线观看| 精品少妇人妻Av免费久久农村| 蜜桃av一区二区三区| 久久九九兔免费精品6| 天天天天做夜夜夜夜做无码| 无码人妻精品一区二区三| 亚洲AV无码一区二区二三区我| 日产2021免费一二三四| 美女MM131爽爽爽| 公司办公桌C了我好几次| 白嫩少妇激情无码| 天美传媒MV高清版在线观看 | 成人无码无遮挡很H在线播放| 精品少妇一区二区| 中文字幕乱妇无码AV在线| 欧美熟VIDEOS肥婆| 高潮喷视频在线无码| 天美传媒MV免费观看完整| 久久AⅤ人妻少妇嫩草影院| 超薄肉色丝袜一区二区| 年级老师的滋味4| 被多男摁住灌浓精| 欧美成人一区二区三区| 成人国产亚洲精品A区| 欧洲精品99毛片免费高清观看| 黑人性狂欢在线播放| 毛很浓密超多黑毛| 精品熟女AV少妇免费久久自慰| 全黄H全肉边做边吃奶视频| 无码人妻丰满熟妇区毛片18 |