Как я могу получить значения пути из URL в JavaScript? - PullRequest
3 голосов
/ 29 января 2020

У меня есть это:

http://example.com/iu4pa9rm8vfh.html?param_1

Я хочу это:

iu4pa9rm8vfh
var url ="http://example.com/iu4pa9rm8vfh.html?param_1";
  document.getElementById("demo").innerHTML = 
"The pathname of this page is :" + url.pathname;

Заранее благодарен за любое руководство!

обновление в чем проблема в результатах

<!DOCTYPE html>
<html>

<body>

  <p id="demo"></p>

  <script>
    const url = new URL("http://example.com/iu4pa9rm8vfh.html?param_1")
    const pathname = url.pathname.match(/([0-9a-z]+)/)
    console.log(pathname[0])

    document.getElementById("demo").innerHTML = "The pathname of this page is :" + pathname;
  </script>

</body>

</html>

Ответы [ 5 ]

3 голосов
/ 29 января 2020

вы можете сделать это так:

const url = new URL('http://example.com/iu4pa9rm8vfh.html?param_1')
let path = url.pathname.split('.')[0].replace('/','')
document.getElementById("demo").innerHTML = "The pathname of this page is :" + path;

<!DOCTYPE html>
<html>

<body>

  <p id="demo"></p>

  <script>
    const url = new URL('http://example.com/iu4pa9rm8vfh.html?param_1')
    let path = url.pathname.split('.')[0].replace('/','')
    document.getElementById("demo").innerHTML = "The pathname of this page is :" + path;
  </script>

</body>

</html>
3 голосов
/ 29 января 2020

Вы можете использовать конструктор URL для создания объекта URL, например:

const url = new URL("http://example.com/iu4pa9rm8vfh.html?param_1")
console.log(url.pathname)

Затем удалите ненужные биты. Или, точнее, в приведенном ниже примере выполните регулярное выражение для пути, чтобы получить только символы алфавита c:

const url = new URL("http://example.com/iu4pa9rm8vfh.html?param_1")
const pathname = url.pathname.match(/([0-9a-z]+)/)
console.log(pathname[0])

Обратите внимание, что если вы укажете недопустимый URL-адрес для конструктора URL, он выдаст ошибку, поэтому убедитесь, что вы ее уловили и обработали изящно.

Более подробная информация по URL:


Поскольку вы пометили этот вопрос тегом (возможно, вам нужен ответ, который работает в <= IE11 как * 1037) * эти браузеры не поддерживают конструктор <code>URL ), поэтому вы можете использовать следующий подход:

function parseUrl(url) {
    var a = document.createElement('a');
    a.href = url;
    return a;
}

const url = parseUrl('http://example.com/iu4pa9rm8vfh.html?param_1')
const pathname = url.pathname.match(/([0-9a-z]+)/)
console.log(pathname[0])

(изменено с этот ответ .)

1 голос
/ 29 января 2020

Есть несколько способов, которыми вы можете получить путь.

Но с технической точки зрения вы должны использовать метод конструктора URL для создания объекта из URL. А затем используйте его свойство для получения пути.

Имя свойства: путь

const url = new URL("http://example.com/iu4pa9rm8vfh.html?param_1")
console.log(url.pathname.replace("/", "").replace(".html",""))

Я использовал метод замены для удаления тега sla sh и. html, присутствующего в имени пути. Я надеюсь, что это помогает! :)

0 голосов
/ 16 апреля 2020

Если возможно, используйте Javascript URL Api: https://developer.mozilla.org/en-US/docs/Web/API/URL_API

let addr = new URL("http://example.com/iu4pa9rm8vfh.html?param_1");
// addr.pathname will return "/iu4pa9rm8vfh.html"
// Many wasys to skin this cat, but below is one way using split and slice
// Result will be "iu4pa9rm8vfh"
console.log(addr.pathname.split('.')[0].slice(1));
0 голосов
/ 29 января 2020

Вы можете сделать это различными способами, но я хотел бы предложить вам использовать subString(startIndex,endIndex).

Следующий код вернет любую вещь от .com/ до .html

var url = "http://example.com/iu4pa9rm8vfh.html?param_1";

url.substring(url.indexOf('.com/')+5,url.indexOf('.html'));
...