国产秋霞理论久久久电影-婷婷色九月综合激情丁香-欧美在线观看乱妇视频-精品国avA久久久久久久-国产乱码精品一区二区三区亚洲人-欧美熟妇一区二区三区蜜桃视频

【總結(jié)】前端常用60余種校驗類工具方法

共 21897字,需瀏覽 44分鐘

 ·

2021-09-03 13:25


工欲善其事必先利其器,前端開發(fā)有時會處理一部分后臺返回的數(shù)據(jù)或者根據(jù)數(shù)據(jù)判斷做一些處理,這個時候就非常有必要將一些常用的工具類封裝起來。


1.郵箱

export const isEmail = (s) => {    return /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+((.[a-zA-Z0-9_-]{2,3}){1,2})$/.test(s)}

2.手機號碼

export const isMobile = (s) => {    return /^1[0-9]{10}$/.test(s)}

3.電話號碼

export const isPhone = (s) => {    return /^([0-9]{3,4}-)?[0-9]{7,8}$/.test(s)}

4.是否url地址

export const isURL = (s) => {    return /^http[s]?:\/\/.*/.test(s)}

5.是否字符串

export const isString = (o) => {    return Object.prototype.toString.call(o).slice(8, -1) === 'String'}

6.是否數(shù)字

export const isNumber = (o) => {    return Object.prototype.toString.call(o).slice(8, -1) === 'Number'}

7.是否boolean

export const isBoolean = (o) => {    return Object.prototype.toString.call(o).slice(8, -1) === 'Boolean'}

8.是否函數(shù)

export const isFunction = (o) => {    return Object.prototype.toString.call(o).slice(8, -1) === 'Function'}

9.是否為null

export const isNull = (o) => {    return Object.prototype.toString.call(o).slice(8, -1) === 'Null'}

10.是否undefined

export const isUndefined = (o) => {    return Object.prototype.toString.call(o).slice(8, -1) === 'Undefined'}

11.是否對象

export const isObj = (o) => {    return Object.prototype.toString.call(o).slice(8, -1) === 'Object'}

12.是否數(shù)組

export const isArray = (o) => {    return Object.prototype.toString.call(o).slice(8, -1) === 'Array'}

13.是否時間

export const isDate = (o) => {    return Object.prototype.toString.call(o).slice(8, -1) === 'Date'}

14.是否正則

export const isRegExp = (o) => {    return Object.prototype.toString.call(o).slice(8, -1) === 'RegExp'}

15.是否錯誤對象

export const isError = (o) => {    return Object.prototype.toString.call(o).slice(8, -1) === 'Error'}

16.是否Symbol函數(shù)

export const isSymbol = (o) => {    return Object.prototype.toString.call(o).slice(8, -1) === 'Symbol'}

17.是否Promise對象

export const isPromise = (o) => {    return Object.prototype.toString.call(o).slice(8, -1) === 'Promise'}

18.是否Set對象

export const isSet = (o) => {    return Object.prototype.toString.call(o).slice(8, -1) === 'Set'}
export const ua = navigator.userAgent.toLowerCase();

19.是否是微信瀏覽器

export const isWeiXin = () => {    return ua.match(/microMessenger/i) == 'micromessenger'}

20.是否是移動端

export const isDeviceMobile = () => {    return /android|webos|iphone|ipod|balckberry/i.test(ua)}

21.是否是QQ瀏覽器

export const isQQBrowser = () => {    return !!ua.match(/mqqbrowser|qzone|qqbrowser|qbwebviewtype/i)}

22.是否是爬蟲

export const isSpider = () => {    return /adsbot|googlebot|bingbot|msnbot|yandexbot|baidubot|robot|careerbot|seznambot|bot|baiduspider|jikespider|symantecspider|scannerlwebcrawler|crawler|360spider|sosospider|sogou web sprider|sogou orion spider/.test(ua)}

23.是否ios

export const isIos = () => {    var u = navigator.userAgent;    if (u.indexOf('Android') > -1 || u.indexOf('Linux') > -1) {  //安卓手機        return false    } else if (u.indexOf('iPhone') > -1) {//蘋果手機        return true    } else if (u.indexOf('iPad') > -1) {//iPad        return false    } else if (u.indexOf('Windows Phone') > -1) {//winphone手機        return false    } else {        return false    }}

24.是否為PC端

export const isPC = () => {    var userAgentInfo = navigator.userAgent;    var Agents = ["Android", "iPhone",        "SymbianOS", "Windows Phone",        "iPad", "iPod"];    var flag = true;    for (var v = 0; v < Agents.length; v++) {        if (userAgentInfo.indexOf(Agents[v]) > 0) {            flag = false;            break;        }    }    return flag;}

25.去除html標簽

export const removeHtmltag = (str) => {    return str.replace(/<[^>]+>/g, '')}

26.獲取url參數(shù)

export const getQueryString = (name) => {    const reg = new RegExp('(^|&)' + name + '=([^&]*)(&|$)', 'i');    const search = window.location.search.split('?')[1] || '';    const r = search.match(reg) || [];    return r[2];}

27.動態(tài)引入js

export const injectScript = (src) => {    const s = document.createElement('script');    s.type = 'text/javascript';    s.async = true;    s.src = src;    const t = document.getElementsByTagName('script')[0];    t.parentNode.insertBefore(s, t);}

28.根據(jù)url地址下載

export const download = (url) => {    var isChrome = navigator.userAgent.toLowerCase().indexOf('chrome') > -1;    var isSafari = navigator.userAgent.toLowerCase().indexOf('safari') > -1;    if (isChrome || isSafari) {        var link = document.createElement('a');        link.href = url;        if (link.download !== undefined) {            var fileName = url.substring(url.lastIndexOf('/') + 1, url.length);            link.download = fileName;        }        if (document.createEvent) {            var e = document.createEvent('MouseEvents');            e.initEvent('click', true, true);            link.dispatchEvent(e);            return true;        }    }    if (url.indexOf('?') === -1) {        url += '?download';    }    window.open(url, '_self');    return true;}

29.el是否包含某個class

export const hasClass = (el, className) => {    let reg = new RegExp('(^|\\s)' + className + '(\\s|$)')    return reg.test(el.className)}

30.el添加某個class

export const addClass = (el, className) => {    if (hasClass(el, className)) {        return    }    let newClass = el.className.split(' ')    newClass.push(className)    el.className = newClass.join(' ')}

31.el去除某個class

export const removeClass = (el, className) => {    if (!hasClass(el, className)) {        return    }    let reg = new RegExp('(^|\\s)' + className + '(\\s|$)', 'g')    el.className = el.className.replace(reg, ' ')}

32.獲取滾動的坐標

export const getScrollPosition = (el = window) => ({    x: el.pageXOffset !== undefined ? el.pageXOffset : el.scrollLeft,    y: el.pageYOffset !== undefined ? el.pageYOffset : el.scrollTop});

33.滾動到頂部

export const scrollToTop = () => {    const c = document.documentElement.scrollTop || document.body.scrollTop;    if (c > 0) {        window.requestAnimationFrame(scrollToTop);        window.scrollTo(0, c - c / 8);    }}

34.el是否在視口范圍內(nèi)

export const elementIsVisibleInViewport = (el, partiallyVisible = false) => {    const { top, left, bottom, right } = el.getBoundingClientRect();    const { innerHeight, innerWidth } = window;    return partiallyVisible        ? ((top > 0 && top < innerHeight) || (bottom > 0 && bottom < innerHeight)) &&        ((left > 0 && left < innerWidth) || (right > 0 && right < innerWidth))        : top >= 0 && left >= 0 && bottom <= innerHeight && right <= innerWidth;}

35.洗牌算法隨機

export const shuffle = (arr) => {    var result = [],        random;    while (arr.length > 0) {        random = Math.floor(Math.random() * arr.length);        result.push(arr[random])        arr.splice(random, 1)    }    return result;}

36.劫持粘貼板

export const copyTextToClipboard = (value) => {    var textArea = document.createElement("textarea");    textArea.style.background = 'transparent';    textArea.value = value;    document.body.appendChild(textArea);    textArea.select();    try {        var successful = document.execCommand('copy');    } catch (err) {        console.log('Oops, unable to copy');    }    document.body.removeChild(textArea);}

37.判斷類型集合

export const checkStr = (str, type) => {    switch (type) {        case 'phone':   //手機號碼            return /^1[3|4|5|6|7|8|9][0-9]{9}$/.test(str);        case 'tel':     //座機            return /^(0\d{2,3}-\d{7,8})(-\d{1,4})?$/.test(str);        case 'card':    //身份證            return /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/.test(str);        case 'pwd':     //密碼以字母開頭,長度在6~18之間,只能包含字母、數(shù)字和下劃線            return /^[a-zA-Z]\w{5,17}$/.test(str)        case 'postal':  //郵政編碼            return /[1-9]\d{5}(?!\d)/.test(str);        case 'QQ':      //QQ號            return /^[1-9][0-9]{4,9}$/.test(str);        case 'email':   //郵箱            return /^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$/.test(str);        case 'money':   //金額(小數(shù)點2位)            return /^\d*(?:\.\d{0,2})?$/.test(str);        case 'URL':     //網(wǎng)址            return /(http|ftp|https):\/\/[\w\-_]+(\.[\w\-_]+)+([\w\-\.,@?^=%&:/~\+#]*[\w\-\@?^=%&/~\+#])?/.test(str)        case 'IP':      //IP            return /((?:(?:25[0-5]|2[0-4]\\d|[01]?\\d?\\d)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d?\\d))/.test(str);        case 'date':    //日期時間            return /^(\d{4})\-(\d{2})\-(\d{2}) (\d{2})(?:\:\d{2}|:(\d{2}):(\d{2}))$/.test(str) || /^(\d{4})\-(\d{2})\-(\d{2})$/.test(str)        case 'number':  //數(shù)字            return /^[0-9]$/.test(str);        case 'english': //英文            return /^[a-zA-Z]+$/.test(str);        case 'chinese': //中文            return /^[\\u4E00-\\u9FA5]+$/.test(str);        case 'lower':   //小寫            return /^[a-z]+$/.test(str);        case 'upper':   //大寫            return /^[A-Z]+$/.test(str);        case 'HTML':    //HTML標記            return /<("[^"]*"|'[^']*'|[^'">])*>/.test(str);        default:            return true;    }}

38.嚴格的身份證校驗

export const isCardID = (sId) => {    if (!/(^\d{15}$)|(^\d{17}(\d|X|x)$)/.test(sId)) {        console.log('你輸入的身份證長度或格式錯誤')        return false    }    //身份證城市    var aCity = { 11: "北京", 12: "天津", 13: "河北", 14: "山西", 15: "內(nèi)蒙古", 21: "遼寧", 22: "吉林", 23: "黑龍江", 31: "上海", 32: "江蘇", 33: "浙江", 34: "安徽", 35: "福建", 36: "江西", 37: "山東", 41: "河南", 42: "湖北", 43: "湖南", 44: "廣東", 45: "廣西", 46: "海南", 50: "重慶", 51: "四川", 52: "貴州", 53: "云南", 54: "西藏", 61: "陜西", 62: "甘肅", 63: "青海", 64: "寧夏", 65: "新疆", 71: "臺灣", 81: "香港", 82: "澳門", 91: "國外" };    if (!aCity[parseInt(sId.substr(0, 2))]) {        console.log('你的身份證地區(qū)非法')        return false    }
// 出生日期驗證 var sBirthday = (sId.substr(6, 4) + "-" + Number(sId.substr(10, 2)) + "-" + Number(sId.substr(12, 2))).replace(/-/g, "/"), d = new Date(sBirthday) if (sBirthday != (d.getFullYear() + "/" + (d.getMonth() + 1) + "/" + d.getDate())) { console.log('身份證上的出生日期非法') return false }
// 身份證號碼校驗 var sum = 0, weights = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2], codes = "10X98765432" for (var i = 0; i < sId.length - 1; i++) { sum += sId[i] * weights[i]; } var last = codes[sum % 11]; //計算出來的最后一位身份證號碼 if (sId[sId.length - 1] != last) { console.log('你輸入的身份證號非法') return false }
return true}

39.隨機數(shù)范圍

export const random = (min, max) => {    if (arguments.length === 2) {        return Math.floor(min + Math.random() * ((max + 1) - min))    } else {        return null;    }}

40.將阿拉伯數(shù)字翻譯成中文的大寫數(shù)字

export const numberToChinese = (num) => {    var AA = new Array("零", "一", "二", "三", "四", "五", "六", "七", "八", "九", "十");    var BB = new Array("", "十", "百", "仟", "萬", "億", "點", "");    var a = ("" + num).replace(/(^0*)/g, "").split("."),        k = 0,        re = "";    for (var i = a[0].length - 1; i >= 0; i--) {        switch (k) {            case 0:                re = BB[7] + re;                break;            case 4:                if (!new RegExp("0{4}//d{" + (a[0].length - i - 1) + "}$")                    .test(a[0]))                    re = BB[4] + re;                break;            case 8:                re = BB[5] + re;                BB[7] = BB[5];                k = 0;                break;        }        if (k % 4 == 2 && a[0].charAt(i + 2) != 0 && a[0].charAt(i + 1) == 0)            re = AA[0] + re;        if (a[0].charAt(i) != 0)            re = AA[a[0].charAt(i)] + BB[k % 4] + re;        k++;    }
if (a.length > 1) // 加上小數(shù)部分(如果有小數(shù)部分) { re += BB[6]; for (var i = 0; i < a[1].length; i++) re += AA[a[1].charAt(i)]; } if (re == '一十') re = "十"; if (re.match(/^一/) && re.length == 3) re = re.replace("一", ""); return re;}

41.將數(shù)字轉(zhuǎn)換為大寫金額

export const changeToChinese = (Num) => {    //判斷如果傳遞進來的不是字符的話轉(zhuǎn)換為字符    if (typeof Num == "number") {        Num = new String(Num);    };    Num = Num.replace(/,/g, "") //替換tomoney()中的“,”    Num = Num.replace(/ /g, "") //替換tomoney()中的空格    Num = Num.replace(/¥/g, "") //替換掉可能出現(xiàn)的¥字符    if (isNaN(Num)) { //驗證輸入的字符是否為數(shù)字        //alert("請檢查小寫金額是否正確");        return "";    };    //字符處理完畢后開始轉(zhuǎn)換,采用前后兩部分分別轉(zhuǎn)換    var part = String(Num).split(".");    var newchar = "";    //小數(shù)點前進行轉(zhuǎn)化    for (var i = part[0].length - 1; i >= 0; i--) {        if (part[0].length > 10) {            return "";            //若數(shù)量超過拾億單位,提示        }        var tmpnewchar = ""        var perchar = part[0].charAt(i);        switch (perchar) {            case "0":                tmpnewchar = "零" + tmpnewchar;                break;            case "1":                tmpnewchar = "壹" + tmpnewchar;                break;            case "2":                tmpnewchar = "貳" + tmpnewchar;                break;            case "3":                tmpnewchar = "叁" + tmpnewchar;                break;            case "4":                tmpnewchar = "肆" + tmpnewchar;                break;            case "5":                tmpnewchar = "伍" + tmpnewchar;                break;            case "6":                tmpnewchar = "陸" + tmpnewchar;                break;            case "7":                tmpnewchar = "柒" + tmpnewchar;                break;            case "8":                tmpnewchar = "捌" + tmpnewchar;                break;            case "9":                tmpnewchar = "玖" + tmpnewchar;                break;        }        switch (part[0].length - i - 1) {            case 0:                tmpnewchar = tmpnewchar + "元";                break;            case 1:                if (perchar != 0) tmpnewchar = tmpnewchar + "拾";                break;            case 2:                if (perchar != 0) tmpnewchar = tmpnewchar + "佰";                break;            case 3:                if (perchar != 0) tmpnewchar = tmpnewchar + "仟";                break;            case 4:                tmpnewchar = tmpnewchar + "萬";                break;            case 5:                if (perchar != 0) tmpnewchar = tmpnewchar + "拾";                break;            case 6:                if (perchar != 0) tmpnewchar = tmpnewchar + "佰";                break;            case 7:                if (perchar != 0) tmpnewchar = tmpnewchar + "仟";                break;            case 8:                tmpnewchar = tmpnewchar + "億";                break;            case 9:                tmpnewchar = tmpnewchar + "拾";                break;        }        var newchar = tmpnewchar + newchar;    }    //小數(shù)點之后進行轉(zhuǎn)化    if (Num.indexOf(".") != -1) {        if (part[1].length > 2) {            // alert("小數(shù)點之后只能保留兩位,系統(tǒng)將自動截斷");            part[1] = part[1].substr(0, 2)        }        for (i = 0; i < part[1].length; i++) {            tmpnewchar = ""            perchar = part[1].charAt(i)            switch (perchar) {                case "0":                    tmpnewchar = "零" + tmpnewchar;                    break;                case "1":                    tmpnewchar = "壹" + tmpnewchar;                    break;                case "2":                    tmpnewchar = "貳" + tmpnewchar;                    break;                case "3":                    tmpnewchar = "叁" + tmpnewchar;                    break;                case "4":                    tmpnewchar = "肆" + tmpnewchar;                    break;                case "5":                    tmpnewchar = "伍" + tmpnewchar;                    break;                case "6":                    tmpnewchar = "陸" + tmpnewchar;                    break;                case "7":                    tmpnewchar = "柒" + tmpnewchar;                    break;                case "8":                    tmpnewchar = "捌" + tmpnewchar;                    break;                case "9":                    tmpnewchar = "玖" + tmpnewchar;                    break;            }            if (i == 0) tmpnewchar = tmpnewchar + "角";            if (i == 1) tmpnewchar = tmpnewchar + "分";            newchar = newchar + tmpnewchar;        }    }    //替換所有無用漢字    while (newchar.search("零零") != -1)        newchar = newchar.replace("零零", "零");    newchar = newchar.replace("零億", "億");    newchar = newchar.replace("億萬", "億");    newchar = newchar.replace("零萬", "萬");    newchar = newchar.replace("零元", "元");    newchar = newchar.replace("零角", "");    newchar = newchar.replace("零分", "");    if (newchar.charAt(newchar.length - 1) == "元") {        newchar = newchar + "整"    }    return newchar;}

42.判斷一個元素是否在數(shù)組中

export const contains = (arr, val) => {    return arr.indexOf(val) != -1 ? true : false;}

43.數(shù)組排序,{type} 1:從小到大 2:從大到小 3:隨機

export const sort = (arr, type = 1) => {    return arr.sort((a, b) => {        switch (type) {            case 1:                return a - b;            case 2:                return b - a;            case 3:                return Math.random() - 0.5;            default:                return arr;        }    })}

44.去重

export const unique = (arr) => {    if (Array.hasOwnProperty('from')) {        return Array.from(new Set(arr));    } else {        var n = {}, r = [];        for (var i = 0; i < arr.length; i++) {            if (!n[arr[i]]) {                n[arr[i]] = true;                r.push(arr[i]);            }        }        return r;    }}

45.求兩個集合的并集

export const union = (a, b) => {    var newArr = a.concat(b);    return this.unique(newArr);}

46.求兩個集合的交集

export const intersect = (a, b) => {    var _this = this;    a = this.unique(a);    return this.map(a, function (o) {        return _this.contains(b, o) ? o : null;    });}

47.刪除其中一個元素

export const remove = (arr, ele) => {    var index = arr.indexOf(ele);    if (index > -1) {        arr.splice(index, 1);    }    return arr;}

48.將類數(shù)組轉(zhuǎn)換為數(shù)組

export const formArray = (ary) => {    var arr = [];    if (Array.isArray(ary)) {        arr = ary;    } else {        arr = Array.prototype.slice.call(ary);    };    return arr;}

49.最大值

export const max = (arr) => {    return Math.max.apply(null, arr);}

50.最小值

export const min = (arr) => {    return Math.min.apply(null, arr);}

51.求和

export const sum = (arr) => {    return arr.reduce((pre, cur) => {        return pre + cur    })}

52.平均值

export const average = (arr) => {    return this.sum(arr) / arr.length}

53.去除空格,type: 1-所有空格 2-前后空格 3-前空格 4-后空格

export const trim = (str, type) => {    type = type || 1    switch (type) {        case 1:            return str.replace(/\s+/g, "");        case 2:            return str.replace(/(^\s*)|(\s*$)/g, "");        case 3:            return str.replace(/(^\s*)/g, "");        case 4:            return str.replace(/(\s*$)/g, "");        default:            return str;    }}

54.字符轉(zhuǎn)換,type: 1:首字母大寫 2:首字母小寫 3:大小寫轉(zhuǎn)換 4:全部大寫 5:全部小寫

export const changeCase = (str, type) => {    type = type || 4    switch (type) {        case 1:            return str.replace(/\b\w+\b/g, function (word) {                return word.substring(0, 1).toUpperCase() + word.substring(1).toLowerCase();
}); case 2: return str.replace(/\b\w+\b/g, function (word) { return word.substring(0, 1).toLowerCase() + word.substring(1).toUpperCase(); }); case 3: return str.split('').map(function (word) { if (/[a-z]/.test(word)) { return word.toUpperCase(); } else { return word.toLowerCase() } }).join('') case 4: return str.toUpperCase(); case 5: return str.toLowerCase(); default: return str; }}

55.檢測密碼強度

export const checkPwd = (str) => {    var Lv = 0;    if (str.length < 6) {        return Lv    }    if (/[0-9]/.test(str)) {        Lv++    }    if (/[a-z]/.test(str)) {        Lv++    }    if (/[A-Z]/.test(str)) {        Lv++    }    if (/[\.|-|_]/.test(str)) {        Lv++    }    return Lv;}

56.函數(shù)節(jié)流器

export const debouncer = (fn, time, interval = 200) => {    if (time - (window.debounceTimestamp || 0) > interval) {        fn && fn();        window.debounceTimestamp = time;    }}

57.在字符串中插入新字符串

export const insertStr = (soure, index, newStr) => {    var str = soure.slice(0, index) + newStr + soure.slice(index);    return str;}

58.判斷兩個對象是否鍵值相同

export const isObjectEqual = (a, b) => {    var aProps = Object.getOwnPropertyNames(a);    var bProps = Object.getOwnPropertyNames(b);
if (aProps.length !== bProps.length) { return false; }
for (var i = 0; i < aProps.length; i++) { var propName = aProps[i];
if (a[propName] !== b[propName]) { return false; } } return true;}

59.16進制顏色轉(zhuǎn)RGBRGBA字符串

export const colorToRGB = (val, opa) => {
var pattern = /^(#?)[a-fA-F0-9]{6}$/; //16進制顏色值校驗規(guī)則 var isOpa = typeof opa == 'number'; //判斷是否有設置不透明度
if (!pattern.test(val)) { //如果值不符合規(guī)則返回空字符 return ''; }
var v = val.replace(/#/, ''); //如果有#號先去除#號 var rgbArr = []; var rgbStr = '';
for (var i = 0; i < 3; i++) { var item = v.substring(i * 2, i * 2 + 2); var num = parseInt(item, 16); rgbArr.push(num); }
rgbStr = rgbArr.join(); rgbStr = 'rgb' + (isOpa ? 'a' : '') + '(' + rgbStr + (isOpa ? ',' + opa : '') + ')'; return rgbStr;}

60.追加url參數(shù)

export const appendQuery = (url, key, value) => {    var options = key;    if (typeof options == 'string') {        options = {};        options[key] = value;    }    options = $.param(options);    if (url.includes('?')) {        url += '&' + options    } else {        url += '?' + options    }    return url;}


1. JavaScript 重溫系列(22篇全)
2. ECMAScript 重溫系列(10篇全)
3. JavaScript設計模式 重溫系列(9篇全)
4. 正則 / 框架 / 算法等 重溫系列(16篇全)
5. Webpack4 入門(上)|| Webpack4 入門(下)
6. MobX 入門(上) ||  MobX 入門(下)
7. 120+篇原創(chuàng)系列匯總

回復“加群”與大佬們一起交流學習~

點擊“閱讀原文”查看 120+ 篇原創(chuàng)文章

瀏覽 41
點贊
評論
收藏
分享

手機掃一掃分享

分享
舉報
評論
圖片
表情
推薦
點贊
評論
收藏
分享

手機掃一掃分享

分享
舉報

感谢您访问我们的网站,您可能还对以下资源感兴趣:

国产秋霞理论久久久电影-婷婷色九月综合激情丁香-欧美在线观看乱妇视频-精品国avA久久久久久久-国产乱码精品一区二区三区亚洲人-欧美熟妇一区二区三区蜜桃视频 久久久久大香蕉| 午夜激情毛片| 艹逼视频| 中文字幕12页| 青青草精品在线视频| 黄色片视频| 操东北女人逼| 国产在线观看一区二区| 黄片久久| 国产一区二区三区在线| 小泽玛利亚一区二区免费| 国产一视频| 操逼首页123| 一级a片免费| 亚洲无码一卡二卡| 99人妻在线| 久久久久免费| 亚洲AV成人无码| 亚洲福利视频电影精| 久草视频在线免费| 欧美激情一区二区A片成人牛牛| 国精产品一区一区三区有限公司杨 | 亚洲综合中文| gogogo高清在线观看免费直播中国| 69av天堂| 在线观看日韩精品| 丰满人妻一区二区三区四区54 | 在线日韩一区二区| 男人的天堂青青草| 欧美五月激情| 最新国产av| 国产激情在线观看| 亚洲三级自拍| 看一级黄色视频| 日韩欧美成人网站| av无码中文字幕| www.欧美| 亚洲一区二区网站| 日韩欧美在线一区| 97国产高清| 五月激情六月丁香| 手机不卡黄色视频在线| 欧美AAAAA| 亚洲无码专区视频| 久操操| 日本三级在线| 日韩一区欧美| 亚洲精品观看| 高清无码在线不卡| 99国产精品99久久久久久| 国产传媒AV| 国产A片大全| 色老板视频在线观看| 黄片网站免费看| AV成人| 99精品网站| 一区二区三区四区精品视频| 狠狠狠狠狠狠| 亚洲高清无码久久| 亚洲无码在线观看网站| 一级黄色操逼视频| 五月天无码视频| 中文字幕乱码亚洲无线码按摩| 色色免费| 手机成人在线视频| 四川少妇BBw搡BBBB槡BBBB| 在线中文字幕第一页| 无码福利导航| 男女www| 丁香五月天在线播放| 欧美内射在线| 91精品大屁股白浆自慰久久久| 3级毛片| 天天干夜夜操| 成人大香蕉网站精品免费| 国产第1页| 久久思热国产| 婷婷性爱五月天| 插菊综合网| 成人免费无码A片免费| 在线免费观看黄色视频网站| 尻屄视频在线观看| 人人插人人澡| 大香蕉在线75| 亚洲成人无码视频| 一区二区三区在线视频观看| 97在线观看免费视频| 性感成人在线| 北条麻妃一区二区三区在线播放| 日本一级黃色大片看免费| 小早川怜子精品一区二区| 三级网站网址| 四虎精品| 欧美亚洲国产一区二区三区| 日韩1页| 国产精品秘精东影业| 欧美亚洲日韩在线观看| 翔田千里无码XXXXXX| 午夜三级视频| 一级黄色电影免费观看| 黄色免费av| AV午夜| 欧美成人一区二区三区| 亚洲AAAAAA| 久久视频99| 人妻熟妇乱子伦精品无码专区毛片| 91综合在线| 久久伊思人在| 三级片自拍| 蜜桃视频com.www| 六月色婷婷| av在线天堂网| 日韩黄色视频| 无码在线观看免费视频| 最新国产激情视频| 日韩日日日| 另类视频区| 亚洲在线视频播放| 国产卡一卡二在线| 国产精品免费在线| 亚洲少妇无码| 亚洲精品国产成人| 婷婷免费视频| 国产三级黄色| 女人操逼视频| 白嫩外女BBwBBwBBw| 国产一区二区三区视频在线| www欧美| 中文字幕第23页| 中文有码| 新妺妺窝窝777777野外| 亚洲日韩在线a成| 国产做受91一片二片老头| 免费在线观看黄片视频| 日韩大码无码| 又紧又嫩又爽无遮挡免费| 日韩毛片大全| 国产无套在线观看| 女人18片毛片60分钟黃菲菲| 国产91在线拍揄自揄拍无码九色| 波多野成人无码精品视频| 人妻操逼视频| 麻豆一区二区| 日韩一二三四区| 久久亚洲AV无码午夜麻豆| 国产乱码一区二区三区四区在线| 亚洲精品午夜| v天堂在线观看| 山东wBBBB搡wBBBB| 亚洲网站在线播放| 白嫩无码| 91AV电影| 人成视频在线免费观看| 成人激情四射网| 成人在线不卡| 9无码| 免费AV网站| 色婷婷Av| 大伊香蕉视频| 高清成人无码| 日日夜夜天天综合| 久久三级| 中文无码日韩欧美久久| 一区免费在线| 日本色情网| 国产福利在线播放| 成人激情综合| 国产又爽又黄视频在线看| 亚洲AV无码久| 双飞少妇| 国产一级女婬乱免费看| 日本道在线视频| 黄色电影毛片| 三级片无码| 午夜无码人妻AV大片| 欧美日韩第一区| 俺来俺去www色婷婷| 男女午夜福利| 四川婬妇BBw搡BBBB搡| 屁屁影院CCYYCOM发布地| 成人性爱福利视频| 日韩成人影片| 女人18片毛片60分钟黃菲菲| 久久大香蕉网| 国产精品久久77777| 人人摸人人爱| 日韩毛片网站| 日本高清无码在线| 久久成人福利| 欧美日韩黄色极品| 翔田千里无码流出两部| 亚洲天堂成人| 二区三区在线| 中文在线资源| 特黄一级片| 无套内射免费视频| 免费看黄片网站| 日韩欧美亚洲| 蜜桃视频在线入口www| 国产成人无码一区二区在线观看 | 欧美老司机| 天天玩夜夜玩天天玩国产99| 丁香激情五月天| 军人妓女院BD高清片在线播放| 亚洲69p| 国产av三级| 91嫖妓站街按店老熟女| 久久久久久黄| 偷拍九九热| 人人妻人人澡人人爽久久av| 国产美女操逼| 奇米av| 欧美淫乱视频| 在线免费看黄色视频| 中文字幕日本无码| 100国产精品人妻无码| 欧美男女操逼视频| 超碰在线免费播放| 99久久综合国产精品二区| 爆操太妹| 岛国AV在线| 自拍偷拍综合| 亚洲成人娱乐网| 红桃视频无码| 欧洲一区在线观看| 欧美小黄片| 麻豆91蜜桃传媒在线观看| 色97| 性猛交AAAA片免费观看直播| 久久国产精品伦子伦| 亚洲无码三级片在线观看| 成人AV在线电影| 亚洲任你操超碰在线| 成年人视频网站| 麻豆精品| 欧美日屄| 伊人网综合| 18禁在线| 人人草人人爱| 天堂中文在线观看| 高潮喷水在线观看| 国产av影院| 99精品久久| 欧美成人精品AAA| 天堂网在线视频| 亚洲精品蜜桃| 青草视频在线播放| 在线中文字幕视频| 亚洲成人无码电影| 东京热精品视频| 99在线视频免费观看| 91狠狠综合久久久久久| 3D动漫精品啪啪一区二区下载| 午夜黄色影院| 日韩黄页网站| 日韩电影免费在线观看中文字幕| 亚洲免费在线观看视频| 亚洲精品午夜福利| 久草视频免费在线观看| 欧美成人视频18| 亚洲无码门| 国产AV无码区亚洲| 国产精品91久久久| 西西www444无码大胆| 亚洲中文字幕无码爆乳av| 国产午夜福利免费视频在线观看| 国产日韩91| 91中文无码| 美日韩一区| 伊人黄色电影| 九九精品99| 亚洲精品不卡| 91欧美日韩综合| 中国操逼视频| 丁香激情五月| 日本操逼视频| 天天想天天干| 伊人成人网视频| 翔田千里无码免费播放| 亚洲色图网站| 一级a免一级a做免费线看内祥| 精品日韩一区二区三区| 亚洲AV秘无码苍井空| 亚洲精品无码久久久| 中国熟妇XXXX18| 黄色欧美视频| 翔田千里无码在线观看| 伊人二区| 91热爆在线| 国产精品视频无码| 臭小子晚上让你爽个够视频| 91最新网址| 国产人人干| 日本A片一级| 色色色免费视频| A级免费视频| 日产精品久久久久| 熟女国产| 日本熟妇一区二区三区| 日韩成人无码视频| 精品一区国产探花| 特级西西444www高清大胆免费看| 国产色色视频| 亚洲中文字幕观看| 日韩国产成人| 久久亚洲视频| 一级A片免费观看| 伊人网站| 亚洲欧洲视频在线观看| 大地中文资源5页的更新内容| 国产精品无码中文在线| 国产精品无码成人AV在线播放| 国产在线第一页| 国产午夜91人妻| 91AV一区二区三区| 无码无码一区二区三区| 日本熟妇一区二区三区| 无码超碰| 天天干天天日蜜臀色欲av| 国产精品1区2区3区| 操操网站| 黄色三级在线观看| 手机在线成人视频| AAA精品| 在线黄色AV| 国产在线秘麻豆精品观看| 中文字幕三级片在线观看| 在线观看一级片| 日韩成人高清| 国产—a毛—a毛A免费| 日韩欧美视频| 欧美a∨| 一级a免一级a做免费线看内裤的注意事项| 久草婷婷| 精品国产乱码一区二区| 超碰九九热| 手机在线观看av| 一本色道久久加勒比精品| 国产区在线观看| 亚洲无码一区二区三区蜜桃| 北条麻妃JUX-869无码播放 | 亚洲成人精品一区二区| 91久久国产性奴调教| 欧美性爱香蕉视频| 国产大鸡巴| 国产第八页| 艹逼在线观看| 先锋影音资源av| 暴操美女网站| 欧美综合亚洲| 婷婷99狠狠躁天天躁| 看90后操B| 91妻人人澡人人爽人人精品| AV在线一区二区| 牛牛AV| 成人精品一区日本无码网站suv/ | AV在线免费播放| 久热中文在线观看精品视频| 色色热热| 成人看片33x9.CC| 蜜桃久久久亚洲| 日本无码免费视频| 韩日一级17c| 日韩精品一区二区亚洲AV观看| 欧美日本在线观看| 人妻无码中文久久久久专区| 无码久| 在线一区二区三区四区| 韩日成人| 成人伊人综合| 福利一区二区视频网| 四虎人妻| 日韩大屌| 色婷婷五月天| 国产成人TV| 91久久国产综合| 国产第八页| 国产AV影片| 国产青青| 污污污污污www网站免费民国| 黄色A片免费| 嫩BBB搡BBB槡BBB小号| 欧美日韩中字| 91吴梦梦一区二区传媒| 69精品| 国产黄片在线视频| 99热自拍| 色九九视频| 俺来也俺去了| 亚洲欧洲在线播放| 亚洲成人第一页| 日本A片在线观看| 国产女人水真多18毛片18精品| 岛国AV在线播放| 国产AV无遮挡| 国产精品成人一区二区| 五月丁香综合久久| 日韩视频网址| 日韩人妻无码一区二区三区中文 | 成人欧美视频| 国产成人高清在线| 无码秘人妻一区二区三-百度| 国产91探花系列在线观看| 成人AV片导航| 久久久久久精品国产三级| 怡春院欧美| 日韩欧美在线播放| 久久天堂AV综合合色蜜桃网| 日本不卡三区| 摸BBB搡BBB搡BBBB| 一区二区三区高清| 国产AV无码影院| 麻豆免费成人视频| 欧美怡红院视频| 欧美性爱免费网站| 强行征服邻居人妻HD高清日本| 成人无码网站| 日韩中文字幕视频在线| 东方av在线观看| 人人操人人妻人人爽| 水果派av解说| 色逼逼网| 成人网站在线看| 国产精品成人免费视频| 人妻少妇偷人精品无码免费| 北条麻妃在线中文字幕| 久久A视频| 国产日韩在线视频| 翔田千里av在线| 91人妻人人操人人爽| 午夜在线无码| 日韩AV免费在线观看| 青青草在线免费视频| 国产精品18进进出出17c| 一道本视频| 婚闹不堪入目A片| 天天操电影| 中文字幕有码在线播放| 国产免费自拍视频| 高清无码视频在线| 狠狠操av| 国产三级网址| 蜜臀99| 打炮影院| 在线观看免费黄网站| 大香蕉综合网| 另类老太婆性BBWBBw| 淫香欲色| 日韩一区二区三区在线| 一级黄色视频免费观看| 91操美女视频| 丰滿人妻一区二区三区| 亚洲婷婷在线视频| 欧美熟妇精品一二三区| 91无码在线视频| 99热99re6国产线播放| 激情五月丁香五月| 一区二区三区无码精品| 狼友视频报放| 久久久久久久久免费看无码| 影音先锋91久久网| 操碧一区| 玖玖爱国产| 黄色网页在线| 欧美大香蕉伊人网| 日本黄色视频在线播放| 91人人操人人| 欧美精品操逼| 黄色欧美视频| 国产日韩欧美在线播放| 波多野结衣与黑人| 精品无套| 久久99热这里只频精品6学生| 91色区| 人妻无码在线观看| 亚洲操| 欧美精品成人在线| 青青草原免费在线视频| 午夜无码在线观看视频| 亚洲一本| 91精品人妻少妇无码影院| 中文字幕免费久久| 91小仙女jK白丝袜呻吟| 欧美日韩亚洲天堂| 亚洲在线无码播放| av一区二区三区| www.男人天堂| 成人黄色免费看| www.jiujiujiu| 三洞齐开Av在线免费观看| 久久人人爱| 午夜理伦| 国产日韩二区| 成人黄色性视频| 九九热在线视频| 国产一级A片久久久免费看快餐| 国产精品久久毛片| 亚洲日韩网站| 99久久免费网| 嫩草亚洲小泬久久夂| 国产ts在线观看| 午夜mm| 胖老板办公室沙发无套爆秘书| 俺来俺去| 欧美日韩国内| 亚洲无码高清在线视频| 男人资源在线| 日韩美女毛片| 91国产爽黄在线相亲| 亚洲在线视频免费观看| 西西特级WWW444无码| 欧美精品久久久久久久久| 人妻少妇被猛烈进入中文字幕 | 国产福利合集| 欧美色视频网| 影音先锋成人AV| 激情综合婷婷| 精品国产va久久久久久久| 成人动漫一区| 中文字幕码精品视频网站| 在线看黄网站| 亚洲区成人777777精品| 国产videos| 99热这里是精品| av色图| 一级毛AA片| 中文电视剧字幕在线播放网站| 日韩动态图| 97狠狠| 大地影院资源官网| 日韩无码成人片| 天天操天天日天天射| 欧美中文网| 西西西444www无码视频| 私人玩物』黑絲OL尤物| 亚洲一级无码| 亚洲无码电影在线| 亚洲区欧美区| 精品99999| 自拍视频国产| 操操操av| 欧美老女人性| 亚洲天堂国产视频| 嫩草久久| 一级黄色影院| 国产一级性爱视频| 国产成人精品a区在线观看| 日本AI高清无码在线观看网址 | 日韩中文字幕久久| 波多野结衣av在线播放| 婷婷五月AV| 久久久夜夜夜| 九九精品视频在线观看| 91热久久| 韩国中文无码| www在线播放| 欧美高清一区二区| 嫩草在线播放| 91国内精品| 99热官方网站| 先锋AV资源在线| 扒开让我91看片在线看| 高清无码视频免费版本在线观看| 久久婷婷热| 麻酥酥在线视频| 九九re精品视频在线观看| 成人黄色在线看| 嫩草A片www在线观看| 在线黄网站| 国产AV综合网| 四虎亚洲无码| 尻屄电影| 国产成人A∨| 亚洲女人天堂AV| av一二三区| 一级色色| 国产欧美一区二区三区国产幕精品 | 少妇高潮日韩| 午夜性福利视频| 成人无码观看| 欧美亚洲图区| 国产永久精品| 一区二区成人电影| 丁香五月激情五月| 91丨熟女丨首页| 俺也去av| 五月丁香免费视频| 亚洲精品播放| 免费日逼视频| 日本在线| 三洞齐开Av在线免费观看| 婷婷手机在线| 亚洲激情黑人| 中文无码人妻少妇| 婷婷二区| 男女啪啪啪网站| 97久久精品| av无码免费观看| 色老板亚洲| 大香蕉伊人影院| 亚洲WWW| 精品久久久久久久| 一级片黄色免费| 亚洲欧洲精品成人久久曰影片| 久爱无码| 亚洲成人免费在线| 亚洲美女免费视频| 日本免费视频| 91成人电影在线观看| 韩国精精品视频| 韩国精品一区| 久久久久久久AV| 色欲AV网站| 成人黄色av| 日韩无码AV电影| 97人妻精品| 日本高清视频网站| 一起操在线视频| 91丨九色丨熟女泻火| 超碰人人爱国产视| 亚洲天堂一区二区三区| www.蜜桃| 黄片91| 久久另类TS人妖一区二区免费| 黑人AV在线观看| WWWA片| 国产精品内射婷婷一级二| 天天日很很操| 黄色片一级片| 成人免费一区| 大鸡吧视频在线观看| 人人爱人人插| 老女人操逼网| 午夜传媒一区二区三区| 亚洲无吗在线观看| 国产欧美一区二区三区四区| 你懂的视频| 久久av一区| 丰滿人妻-区二区三区| 黄色视频小说| 欧美性爱中文字幕| 婷婷国产成人精品| 日韩精品毛片| 男女拍拍免费视频| 精品在线免费观看| 色老板免费精品无码免费视频| 强伦人妻一区二区三区视频| a片免费网站| 成人欧美在线| 男人的天堂av网站| 波多野结衣视频免费在线观看 | 国产精品99精品| 真实野外打野视频| 成年人毛片| 欧美精品欧美精品系列| 一级电影视频去去去| 国产激情| 激情AV在线观看| 边添小泬边狠狠躁视频| 久久噜噜| 亚洲香蕉视频| 天天看天天色| 国产综合网站| a在线视频| 9l人人澡人人妻人人精品| 久9视频| 精品人妻中文字幕| 亚洲欧美久久久久久久久久久久| 青娱乐精品在线| 91玖玖| 精品视频中文字幕| 可以在线观看的AV| 中文字幕无码在线播放| 成人综合激情| 久久免费在线视频| 大香蕉一区二区三区| 嫩草久久| 西西人体444rt高清大胆模特| 99国产精品| 波多野结衣成人网站| 欧美日韩在线视频免费观看| 人人干人人澡| 正在播放无码| 99热在线只有精品| 偷拍三区| 日韩高清无码免费观看| 台湾成人视频| 国产色秘乱码一区二区三区| 日韩精品丰满无码一级A片∴| 影音先锋男人资源站| 日本在线不卡一区| 亚洲中文久久| 亚洲无码影院| 成人午夜啪免费视频在线观看软件 | 亚洲无码网| 国产婷婷五月| 国内精品卡一卡二卡三| 伊人成人视频在线观看| 老太色HD色老太HD-百度| 无码视频一区二区| 久久av网站| 内射| 青春草视频在线观看| 欧美亚洲在线观看| 尤物视频网| 一级A片黃色A片| 18禁网站禁片免费观看| 人妻少妇一区二区| 天天拍夜夜拍| 欧美成人视频大全| 国产一级a一片成人AV| 中文字幕视频2023| 久艹99| 欧美色视频在线观看| 国产91在线中日| 亚洲无码在线播放视频| 亚洲无码中文字幕在线观看| 一区二区三级片| 亚洲视频第一页| 一级a免一级a做免费线看内裤 | 国产婷婷色| 欧美视频色| 亚洲人妻系列| 四虎在线视频观看96| 波多野结衣无码一区二区| 翔田千里高潮90分钟| 天堂资源中文在线| 欧美美女视频网站| 久久538| 国产精品无码永久免费A片| 久久精品99久久久久久| 水果派解说A∨无码区| 男女拍拍免费视频| 大香蕉伊人成人| 毛片毛片毛片毛片毛片毛片| www插插| 亚洲免费视频播放| 加勒比综合无码| 在线观看禁无码精品| 高清无码小视频| 精品国产久久久| 99久久婷婷国产综合精品| 免费v片| 要操逼网| 激情小说亚洲图片:伦| 四虎在线观看一区网址| 俺来也俺去| a在线免费| 蝌蚪窝在线视频免费观看| 九九大香蕉| 91蜜桃传媒在线观看| 色999在线播放视频| 水蜜桃视频免费| 在线观看一区二区视频| 欧美亚洲在线| 在线观看中文字幕无码| 夜夜国自一区| 黄色片网站免费观看| 老司机AV91| 一道本无码在线| 久久av一区二区三区观看| 亚洲av免费在线观看| 狠狠狠狠狠操| 黄片高清免费观看| 中文在线永久免费观看| 99欧美精品| 久久久久国产| 深夜福利网| 中文字幕在线播放第一页| 精品人妻无码| 国产永久精品| 亚洲无遮挡| 黄色片在线看| 国产无码二区| 无码欧美人XXXXX日本无码| 亚洲AV成人无码久久精品麻豆| 日韩黄色在线视频| 国产操P| 91视频一区二区| 精品国产午夜福利在线观看| 国产特级毛片AAAAAA| 天天干天天射天天操| 成年人黄色视频在线观看| 99久久精彩视频| 亚洲成人性爱网站| 亚洲天天在线| 中文字幕永久在线5| 午夜AV影院| 欧美区亚洲区| 日韩无码高清网站| 成人免费毛片AAAAAA片| 中文字幕亚洲欧美| 久久国产一区二区| 欧美黄色小说| 琪琪色在线观看| 91久久午夜无码鲁丝片久久人妻| 日韩操逼一区| 欧美三级视频在线观看| 欧美精品在线观看视频| 9l蝌蚪PORNY中文| 亚洲一级黄色电影| 精品人妻午夜一区二区三区四区 | 无码人妻一区二区三区精品不付款| 国产精品久久久久无码| 天堂在线v| 人人操人人爱人人拍| 国产午夜在线| 围内精品久久久久久久久久‘变脸 | 激情无码在线观看| 欧美在线国产| 日韩精品第一页| 中文字幕免费在线播放| 亚洲激情自拍| 国产乱子伦-区二区| 91热| 黄色福利在线观看| 欧一美一婬一伦一区二区三区自慰,| 无码AV天堂| 亚洲AVwww| 国产精品一二区| 久一视频| 日韩毛片在线看| 亚洲播播在线视频| 国产免费一区二区三区网站免费| 免费看黃色AAAAAA片| 亚洲国产无码在线| 日韩动态视频| 国产日日日| 中文字幕黑人无码| 看看AV| 熟女综合网| 九色欧美| 亚洲精品日韩综合观看成人91| 性做久久久久久久久| 91在线无码精品秘国产色多多 | 伊人国产视频| 国产成人无码一区二区在线播放| 国产搡BBB爽爽爽视频| 成人视频123| 亚洲一级在线| A片小视频| 精品在线第一页| a一级黄片| 国产99页| 9一区二区三区| 久久婷婷婷| 国产欧美一区二区三区视频| 天堂资源网| 91久久综合亚洲鲁鲁五月天| 成人做爰100片免费观看视频| 国产36页| 91麻豆精品无码人妻| 欧美+日韩+国产+成人+在线| 中文无码熟妇一区二区| 天天搞天天曰在线观看| 激情六月天| 性爱视频免费网站| 高清日韩无码视频| 台湾一区二区| 日韩在线视频一区二区三区 | 午夜成人精品一区二区三区| 亚洲激情视频网站| 一区二区在线不卡| 91成人视频| 免费看操逼| 蜜臀色欲AV无码人妻| 国产精品秘麻豆果冻传媒潘甜甜丶| 天天干天天色天天日| 男人天堂色| 北条麻妃在线视频聊天| 国产精品一区二区三区在线| 国产精品一色哟哟哟| AV天堂中文字幕| 嫩BBB搡BBBB搡BBBB-百度| 久草高清视频| 91密臀| 蜜臀网在线观看| 欧美日韩国产成人在线观看| 青青激情视频| 中文字幕H| 高清无码中文字| 操逼网站在线| 欧美偷拍一区二区| 婷婷五月在线播放| 色欲天天网| 精品乱子伦一区二区三区毛| 91成人毛片| 亚洲精品一区中文字幕乱码| 日产精品久久| 日本a片免费| 性爱AV| 操逼操逼操| 在线看毛片网站| 高清在线无码视频| 日韩色爱| 国产成人精品免高潮在线观看| 日韩在线女优天天干| 亚洲免费天堂| 日韩免费AV电影| 大炕上公让我高潮了六次|