javascript - RegExp 中的可选字符串

标签 javascript regex

我想知道该网址是否是博客页面。 博客页面可以是:

  • /博客
  • /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 - RegExp 中的可选字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24403070/

相关文章:

regex - 替换字符但排除使用它的单词正则表达式

java - 在正则表达式中设置最小和最大字符

javascript - 使用 jQuery 重新加载 iframe

javascript - 做 <something> N 次(声明式语法)

javascript - 检查是否有匹配的类名并做一些事情

javascript - 独立获取nodejs中的当前请求(?)

javascript - 如何正确转义和取消转义包含换行文字的多行字符串?

javascript - 如何从回调中获取值?

javascript - RegEx如何修改为只接受1-9之间的1位数字JavaScript

python - 关于正则表达式的查询