我想赶上网址是否是博客页面。博客页面可以是:


/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

最佳答案

您应该添加结束标记($),以便停止检查。

> /\/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

关于javascript - RegEx中的可选字符串,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24403070/

10-15 07:35