我的正则表达式不是很好,我在这里挣扎。我需要正则表达式来从这两种格式中获取标题:
http://domain.com/blog/title
http://secure.com/domainkey/blog/title
但不匹配来自(其中子文件夹可能是多个)的任何内容:
http://domain.com/images/blog/imagename
http://domain.com/images/subfolders/blog/imagename
http://secure.com/domain/images/blog/imagename
http://secure.com/domain/images/subfolders/blog/imagename
有什么想法吗?谢谢。
最佳答案
(http:\/\/(?:(?:secure.com\/domainkey)|(?:domain.com))\/blog\/)([\w-]+)
捕获两部分:
- 基本 url,
http://domain.com/blog/
或http://secure.com/domainkey/blog/
- 标题
用 js 演示:
var regex = /(http:\/\/(?:(?:secure.com\/domainkey)|(?:domain.com))\/blog\/)([\w-]+)/ig;
regex.exec('http://domain.com/blog/blog-title');
// results: ["http://domain.com/blog/blog-title", "http://domain.com/blog/", "blog-title"]
regex.exec('http://secure.com/domainkey/blog/blog-title')
// results: ["http://secure.com/domainkey/blog/blog-title", "http://secure.com/domainkey/blog/", "blog-title"]
假设博客标题只包含[a-zA-Z_-],如果要捕获更多字符,请修改正则表达式的最后部分。
关于regex - 友好的博客网址 Isapi 重写正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14716937/