我有网址喜欢 https://example.com/my-list/page/35/?a=45&b=56
我想使用/ url之后的正则表达式获取页码, 我想要的结果是35
答案 0 :(得分:0)
WordPress 还可以使用另一种 url 格式,其中页码存储在 url 查询 belongs_to :content, finder: :find_by_slug!
参数中,因此最安全的解决方案是涵盖这两种 url 格式。另一个问题是,在任何存档的第一页上,您都不会在 url 中找到页码,因此我们也需要涵盖这种情况。
以下是适用于各种情况的简单函数:
paged
答案 1 :(得分:-1)
使用RegEx有两种简单的方法:
第一种方式:
var s = "https://example.com/my-list/page/35/?a=45&b=56";
// First way uses capture groups based on what comes before the page number: "/page/"
s.match(/\/page\/(\d*)/)[1]; // "35"
第二种方式:
// The second involves using capture grouping based on the search param that appears to follow.
// However, this way might not be ideal as you may extend the URI and make a major change that would then require an edit to this. Of course, that could happen with the previous as well.
s.match(/(\d*)(?=\/\?)/)[0] // "35"
您还可以split
字符串,然后使用正则表达式来抓取字符串的开头:
s.split("/page/")[1].match(/^\d*/); // "35"
您还可以根据最常见的元素简单地拆分整个字符串:" /"。如果您的URI模式始终相同,那么这可能是最简单易读的解决方案之一。但是,如果URI模式更改为包含更多字段,则可能必须调整索引号。
s.split("/")[5] // "35"
您还可以根据" page"的索引使用substr
。这个问题是页码可能是1位,2位或更多:
s.substr(s.indexOf("page/")+5, 2) // "35"
// +5 due to length of phrase i use
你可以使用substr
和index
抓取你想要的字符串,在字符串的最开头有页码。然后使用正则表达式来提取数字并将其置于0索引处。这可能更实用,无论出于何种原因,没有页码。例如,用户最终在"页面"指数基数。
s.substr(s.indexOf("page/")+5).match(/^\d*/)[0] // 35