我想知道网址是否是博客页面。 博客页面可以是:
/blog
/blog/page/1
/blog/page/143
因此,page/pageNumber
是可选的。如果url是博客页面,如何创建正在测试的正则表达式返回true
?
我为包含/page/
字符串的网址创建了正则表达式,它似乎工作正常:
/\/blog\/page\/[1-9]([0-9]*)/
示例:
> /\/blog\/page\/[1-9]([0-9]*)/.test("/blog/page/1")
true
> /\/blog\/page\/[1-9]([0-9]*)/.test("/blog/page/0")
false
> /\/blog\/page\/[1-9]([0-9]*)/.test("/blog/page/30")
true
但是如何将/page/number
设置为可选?
我试过了:
/\/blog(\/page\/[1-9]([0-9]*))?/
这会返回true
的错误网址:
> /\/blog(\/page\/[1-9]([0-9]*))?/.test("/blog/p")
true
答案 0 :(得分:1)
您应该添加结束标记($
),以便停止检查。
> /\/blog(\/page\/[1-9]([0-9]*))?$/.test("/blog/p")
false
> /\/blog(\/page\/[1-9]([0-9]*))?$/.test("/blog/page/1")
true
> /\/blog(\/page\/[1-9]([0-9]*))?$/.test("/blog/page/0")
false
> /\/blog(\/page\/[1-9]([0-9]*))?$/.test("/blog/page/30")
true
> /\/blog(\/page\/[1-9]([0-9]*))?$/.test("/blog")
true
答案 1 :(得分:1)
您想为字符串的开头(^
)和结尾($
)添加标记。在它的当前形式中,如果它只匹配部分字符串,则您的检查也将返回true。
/^\/blog(\/page\/[1-9]([0-9]*))?$/
查看此fiddle。
答案 2 :(得分:1)
您可以使用此正则表达式使/page/num
可选:
/^\/blog(\/page\/\d+)?\/?$/
答案 3 :(得分:0)
你可以使用非捕获组,
^\/blog(?:\/page(?:\/[1-9]\d*)?)?$