繁体   English   中英

从特定字符到特定字符之间提取URL中的字符

[英]Extract characters in URL after certain character up to certain character

我正在尝试使用正则表达式(JavaScript)提取URL的特定部分,并且在排除特定部分之后的字符时遇到麻烦。 这是我到目前为止的内容:

网址: http//www.somesite.com/state-de

使用url.match(/\\/[^\\/]+$/)[0]我可以根据需要提取state-de。

但是,当URL变为http://www.somesite.com/state-de?page=r并且我执行相同的正则表达式时,它会拉出包括我不想要的所有内容,包括“?page = r”。 我只想提取state-de,而不管它之后是什么(看起来通常跟在它后面的是“?”)

这可能起作用:

var arr = url.split("/")
arr[arr.length - 1].split("?")[0]

我建议一般阅读正则表达式。 您要在此处执行的操作是:使正则表达式在碰到时停止? 在网址中。

在这里,使用捕获组来选择所需的匹配部分可能也很有用。

例:

url.match(/(\/[^\/?]+)(?:\?.*)?$/)[1]

如果您想通过正则表达式尝试此操作:

url.match(/https?:\\/\\/([a-z0-9-]+\\.)+[az]+\\/([a-z0-9_-])\\/?(\\?.*)?/)[1]

或者您可以使用JQuery来做到这一点:

var url = 'http://www.somesite.com/state-de?page=r#mark4';

// Create a special anchor element, set the URL to it

var a = $('<a>', { href:url } )[1];

console.log(a.hostname);
console.log(a.pathname);
console.log(a.search);
console.log(a.hash);

我尽可能避免使用过于复杂的RegEx,所以我倾向于分多个步骤(使用.replace() ):

var stripped = url.replace(/[?#].*/, ''); // Strips anything after ? or #

现在,您可以执行更简单的转换来获取状态,例如:

var state = stripped.split('/').pop()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM