Path-to-RegExp是一个可以将诸如/user/:name这样的路径字符串转换为正则表达式的工具。
安装npminstallpath-to-regexp--save用法const{pathToRegexp,match,parse,compile}=require("path-to-regexp");//pathToRegexp(path,keys?,options?)//match(path)//parse(path)//compile(path)Pathtoregexp该pathToRegexp函数将根据提供的path参数返回一个正则表达式对象。它接受以下参数:Path 字符串、字符串数组或正则表达式。Keys (可选)要填充路径中找到的键的数组。Option (可选)sensitive strict endstartdelimiter EndsWithencodeprefixesconstkeys=[];constregexp=pathToRegexp("/foo/:bar",keys);//regexp=/^\/foo(?:\/([^\/#\?]+?))[\/#\?]?$/i//keys=[{name:'bar',prefix:'/',suffix:'',pattern:'[^\\/#\\?]+?',modifier:''}]参数path参数用于定义参数和填充键。命名参数命名参数是通过在参数名称前加一个冒号来定义的( :foo)。constregexp=pathToRegexp("/:foo/:bar");//keys=[{name:'foo',prefix:'/',...},{name:'bar',prefix:'/',...}]regexp.exec("/test/route");//=>['/test/route','test','route',index:0,input:'/test/route',groups:undefined]请注意:参数名称必须使用“单词字符”( [A-Za-z0-9_])。自定义匹配参数
参数可以有一个自定义的正则表达式,它会覆盖默认匹配( [^/]+)。例如,可以匹配路径中的数字或名称:constregexpNumbers=pathToRegexp("/icon-:foo(\\d+).png");//keys=[{name:'foo',...}]regexpNumbers.exec("/icon-123.png");//=>['/icon-123.png','123']regexpNumbers.exec("/icon-abc.png");//=>nullconstregexpWord=pathToRegexp("/(user|u)");//keys=[{name:0,...}]regexpWord.exec("/u");//=>['/u','u']regexpWord.exec("/users");//=>null提示:反斜杠需要在JavaScript字符串中使用另一个反斜杠进行转义。自定义前缀和后缀
可以将参数包裹起来,{}为你的细分创建自定义前缀或后缀:constregexp=pathToRegexp("/:attr1?{-:attr2}?{-:attr3}?");regexp.exec("/test");//=>['/test','test',undefined,undefined]regexp.exec("/test-test");//=>['/test','test','test',undefined]
评论