[英]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.