欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

使用JavaScript校驗URL的方法小結

 更新時間:2023年12月06日 10:18:00   作者:fairyly  
JavaScript中如何校驗一個URL?最近遇到幾次需要校驗URL的,所以本文給大家整理一下幾個校驗URL的方法,文中有詳細的代碼講解和圖文參考,具有一定的參考價值,需要的朋友可以參考下

1.使用 URL 構造函數(shù)來驗證 URL

當傳遞一個字符串給 URL 構造函數(shù)時,如果字符串是一個有效的 URL,將返回一個新的 URL 對象。否則,將返回一個錯誤。

const url = new URL('../cats', 'http://www.example.com/dogs');
console.log(url.hostname); // "www.example.com"
console.log(url.pathname); // "/cats"

在控制臺得到的 URL 對象:

當傳遞一個無效的 URL 字符串:

const exampleUrl = new URL('example');
console.log(exampleUrl);

字符串 'example' 不是一個有效的 URL。因此,會報錯 TypeError:

1.1 使用 URL 構造函數(shù)創(chuàng)建一個 URL 驗證器函數(shù)

使用 URL 構造函數(shù)和 try...catch 語句,創(chuàng)建一個函數(shù):

function isValidUrl(string) {
  try {
    new URL(string);
    return true;
  } catch (err) {
    return false;
  }
}

如果參數(shù)是一個有效的 URL 時,isValidUrl 函數(shù)返回 true。否則,返回 false:

console.log(isValidUrl('https://www.example.com/')); // true
console.log(isValidUrl('mailto://mail@example.com')); // true
console.log(isValidUrl('freecodecamp')); // false

瀏覽器兼容性:

大部分瀏覽器都支持的

1.2 使用 URL 構造器只驗證 HTTP URL

要檢查url是否是一個有效的 HTTP URL,不要其他有效的 URL,如 'mailto://mail@example.com'。

要檢查url是否是一個有效的 HTTP URL,可以使用 URL 對象的 protocol 屬性:

function isValidHttpUrl(string) {
  try {
    const newUrl = new URL(string);
    return newUrl.protocol === 'http:' || newUrl.protocol === 'https:';
  } catch (err) {
    return false;
  }
}

console.log(isValidUrl('https://www.example.com/')); // true
console.log(isValidUrl('mailto://mail@example.com')); // false
console.log(isValidUrl('freecodecamp')); // false

2.使用 npm 包來驗證 URL

NPM 包:is-url 和 is-url-http

2.1 使用 is-url 包驗證 URL

使用 is-url 包來檢查一個字符串是否是一個有效的 URL。這個包并不檢查傳遞給它的 URL 的協(xié)議。

安裝:

npm install is-url --save

使用:

import isUrl from 'is-url';

const firstCheck = isUrl('https://kikobeats.com'); // true
const secondCheck = isUrl('mailto://kiko@beats.com'); // true
const thirdCheck = isUrl('example'); // false

2.2 使用 is-url-http 包來驗證 HTTP URL

安裝:

npm install is-url-http --save

使用:

import isUrlHttp from 'is-url-http';


isUrlHttp('https://kikobeats.com') // ==> true
isUrlHttp('https://kikobeats.com') // ==> true
isUrlHttp('mailto://kiko@beats.com') // ==> false
isUrlHttp('callto:192.168.103.77+type=ip') // ==> false

3.使用 Regex 來驗證 URL

使用正則表達式來檢查一個url是否是有效的 URL

所有有效的 URL 都遵循一個特定的模式。它們有三個主要部分,分別是:

協(xié)議
域名(或 IP 地址)
端口和路徑
有時路徑后面是一個查詢字符串或片段定位符。

3.1 使用正則驗證 URL

function isValidUrl(str) {
  const pattern = new RegExp(
    '^([a-zA-Z]+:\\/\\/)?' + // protocol
      '((([a-z\\d]([a-z\\d-]*[a-z\\d])*)\\.)+[a-z]{2,}|' + // domain name
      '((\\d{1,3}\\.){3}\\d{1,3}))' + // OR IP (v4) address
      '(\\:\\d+)?(\\/[-a-z\\d%_.~+]*)*' + // port and path
      '(\\?[;&a-z\\d%_.~+=-]*)?' + // query string
      '(\\#[-a-z\\d_]*)?$', // fragment locator
    'i'
  );
  return pattern.test(str);
}

console.log(isValidUrl('https://www.kikobeats.com/')); // true
console.log(isValidUrl('mailto://kikobeats.com')); // true
console.log(isValidUrl('example')); // false

3.2 使用正則驗證 HTTP URL

要使用正則來檢查一個url是否是有效的 HTTP URL,需要使用協(xié)議檢查。

使用 '^(https?:\/\/)?',而不是 ^([a-zA-Z]+:\/\/)?:

function isValidHttpUrl(str) {
  const pattern = new RegExp(
    '^(https?:\\/\\/)?' + // protocol
      '((([a-z\\d]([a-z\\d-]*[a-z\\d])*)\\.)+[a-z]{2,}|' + // domain name
      '((\\d{1,3}\\.){3}\\d{1,3}))' + // OR ip (v4) address
      '(\\:\\d+)?(\\/[-a-z\\d%_.~+]*)*' + // port and path
      '(\\?[;&a-z\\d%_.~+=-]*)?' + // query string
      '(\\#[-a-z\\d_]*)?$', // fragment locator
    'i'
  );
  return pattern.test(str);
}

console.log(isValidUrl('https://www.kikobeats.com/')); // true
console.log(isValidUrl('mailto://kikobeats.com')); // false
console.log(isValidUrl('example')); // false

以上就是使用JavaScript校驗URL的方法小結的詳細內(nèi)容,更多關于JavaScript校驗URL的資料請關注腳本之家其它相關文章!

相關文章

  • 微信小程序開發(fā)之路由切換頁面重定向問題

    微信小程序開發(fā)之路由切換頁面重定向問題

    這篇文章主要介紹了微信小程序開發(fā)之路由切換頁面重定向問題,又通過實例代碼給大家介紹了微信小程序的路由跳轉方法,需要的朋友可以參考下
    2018-09-09
  • js獲取對象的屬性值兩種方式

    js獲取對象的屬性值兩種方式

    這篇文章主要介紹了js獲取對象的屬性值兩種方式,在JavaScript中訪問對象的屬性值可以通過點運算符(.)或括號運算符([])兩種方式,文中將兩種方式的代碼介紹的非常詳細,需要的朋友可以參考下
    2024-10-10
  • d3繪制基本的柱形圖的實現(xiàn)代碼

    d3繪制基本的柱形圖的實現(xiàn)代碼

    柱形圖是圖表中常見的一種,這篇文章主要介紹了d3繪制基本的柱形圖的實現(xiàn)代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-12-12
  • window.onload 加載完畢的問題及解決方案(上)

    window.onload 加載完畢的問題及解決方案(上)

    我們經(jīng)常使用 window.onload 來處理頁面,當頁面加載完成做一些事情。但這個 window.onload 是頁面全部加載完成,甚至包括圖片,而我們實際上經(jīng)常需要的是文檔 DOM 加載完畢!
    2009-07-07
  • 前端路由&webpack基礎配置詳解

    前端路由&webpack基礎配置詳解

    這篇文章主要介紹了前端路由&webpack基礎配置詳解,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-06-06
  • javascript break指定標簽打破多層循環(huán)示例

    javascript break指定標簽打破多層循環(huán)示例

    break的語法有兩種break; 和 break label;下面為大家介紹下直接break掉整個循環(huán)嵌套示例
    2014-01-01
  • JavaScript使用類似break機制中斷forEach循環(huán)的方法

    JavaScript使用類似break機制中斷forEach循環(huán)的方法

    這篇文章主要介紹了JavaScript使用類似break機制中斷forEach循環(huán)的方法,需要的朋友可以參考下
    2018-11-11
  • JavaScript深入理解系列之call與apply

    JavaScript深入理解系列之call與apply

    Function.prototype.call和Function.prototype.apply都是非常常用的方法,它們的作用一模一樣,區(qū)別僅在于傳入?yún)?shù)形式的不同,下面這篇文章主要介紹了JavaScript深入理解系列之call與apply的相關資料,需要的朋友可以參考下
    2022-04-04
  • JS實現(xiàn)不規(guī)則TAB選項卡效果代碼

    JS實現(xiàn)不規(guī)則TAB選項卡效果代碼

    這篇文章主要介紹了JS實現(xiàn)不規(guī)則TAB選項卡效果代碼,通過簡單的JavaScript響應鼠標事件動態(tài)變換元素樣式實現(xiàn)不規(guī)則選項卡效果,非常具有實用價值,需要的朋友可以參考下
    2015-09-09
  • JavaScript的異步ajax詳解

    JavaScript的異步ajax詳解

    篇文章主要為大家詳細介紹了JavaScript?異步ajax,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下嗎,希望能夠給你帶來幫助
    2022-03-03

最新評論