正则表达式以匹配javascript中的uri段
Regular expression to match uri segment in javascript
我正在为客户端MVC应用程序开发JavaScript路由器引擎。。。像Backbone或Spine这样的东西也参与其中。
我的路由器需要匹配可选地包括资源标题和可选地包括请求格式的URI段。
我希望捕获资源:id
、可选:name
段和可选:format
段,这样:
/123 => id:'123', name: undefined, format: undefined
/123-my-name => id:'123', name:'my-name', format: undefined
/123.html => id:'123', name: undefined, format:'html'
/123-my-name.html => id:'123', name:'my-name', format:'html'
EDIT:还有其他路由将与嵌套路径匹配,因此此表达式不应与/123-my-name/edit
或/123-my-name/edit.html
匹配
当可选的:name
或:format
段不同时存在时,我可以很容易地匹配它们,但当两者都存在时,很难区分:name
和:format
。
有什么建议吗?
> re = /'/('w+)(?:-('w[-'w]+))?(?:'.(html))?/
/'/('w+)(?:-('w[-'w]+))?(?:'.(html))?/
> "/123".match(re)
["/123", "123", undefined, undefined]
> "/123-my-name".match(re)
["/123-my-name", "123", "my-name", undefined]
> "/123.html".match(re)
["/123.html", "123", undefined, "html"]
> "/123-my-name.html".match(re)
["/123-my-name.html", "123", "my-name", "html"]
然后,
m = url.match(re)
id = m[1]
name = m[2] || default
format = m[3] || default
更具体的选项(id=仅数字,锚定):
> re = /^'/('d+)(?:-('w[-'w]+))?(?:'.(html))?$/
/^'/('d+)(?:-('w[-'w]+))?(?:'.(html))?$/
> "/123-my-route/edit.html".match(re)
null
相关文章:
- Interent Explorer中的数据URI文件下载
- 追加子数据 URI,替换 IE 中的其他对象
- JavaScript中的URI验证
- IE8 中 data:uri 的 32KB 限制的任何解决方法
- 为什么在尝试在 javascript 中对 URI 组件的保留字符进行编码时出现空白 %3 字符
- 如何在Javascript(Google Drive API)中保存HTTP请求中的URI
- ODataModel v2 中的 URI 编码
- JavaScript 中的 HTTP 摘要.新 URI 的 MD5 重新计算
- 如何正确解码 PHP 中编码的 URI 的 JavaScript
- 如何从控制器 ASP.NET url 中删除哈希参数,以便返回到 Angular.JS 应用程序中的根 URI
- 如何替换 API URI 路径中的值以使用 javascript 生成完整的 URL
- AngularJS中的Skype URI按钮问题
- 是否可以加载图像,在内存中缩放它并将其分配为背景图像的 uri
- 如何确定图像是URI还是JavaScript中的缩略图
- 正则表达式以匹配javascript中的uri段
- 区分JavaScript中的URI和slug
- 节点 - npm 请求中的 uri 错误无效
- 使用javascript将URI中的反斜杠更改为正斜杠
- 将数据URI写入Firefox扩展中的文件
- 正则表达式以匹配富文本中的 uri 模式