url 的正則表達式:path-to-regexp


概述

該工具庫用來處理 url 中地址與參數,能夠很方便得到我們想要的數據。

js 中有 RegExp 方法做正則表達式校驗,而 path-to-regexp 可以看成是 url 字符串的正則表達式。

使用

第三方庫,使用前先進行安裝:

$ npm install path-to-regexp

在 js 中使用:

const pathToRegexp = require('path-to-regexp'); 

API 介紹

1. pathToRegexp()

作用:這里這個方法可以類比於 js 中 new ExpReg('xxx')

var pathToRegexp = require('path-to-regexp') var re = pathToRegexp('/foo/:bar') console.log(re); 

打印結果如下:

/^\/foo\/((?:[^\/]+?))(?:\/(?=$))?$/i 

要注意兩點,一點是我們自己的 url 地址,一條是匹配規則。

2. exec()

作用:匹配 url 地址與規則是否相符。

var pathToRegexp = require('path-to-regexp') var re = pathToRegexp('/foo/:bar'); // 匹配規則 var match1 = re.exec('/test/route'); // url 路徑 var match2 = re.exec('/foo/route'); // url 路徑 console.log(match1); console.log(match2); 

打印結果如下:

null [ '/foo/route', 'route', index: 0, input: '/foo/route' ] 

說明:

上述代碼中,第一個 url 路徑與匹配規則不相符返回 null,第二個 url 路徑與匹配規則相符,返回一個數組。

3. parse()

作用:解析 url 字符串中的參數部分(:id)。

var pathToRegexp = require('path-to-regexp'); var url = '/user/:id'; console.log(pathToRegexp.parse(url)); 

打印結果如下:

[ '/user', { name: 'id', prefix: '/', delimiter: '/', optional: false, repeat: false, partial: false, pattern: '[^\\/]+?' } ] 

說明:返回一個數組,從第二個數據可以就可以得到 url 地址攜帶參數的屬性名稱(item.name)。

當然,url 中攜帶參數出了 :id 這種形式,還有 /user?id=11 這種,使用 parse() 方法解析自行查看結果。

4. compile()

作用:快速填充 url 字符串的參數值。

var pathToRegexp = require('path-to-regexp') var url = '/user/:id/:name' var data = {id: 10001, name: 'bob'} console.log(pathToRegexp.compile(url)(data)) 

打印結果:

/user/10001/bob

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM