Saya mencoba menemukan metode yang relatif mudah dan andal untuk mengekstraksi URL dasar dari variabel string menggunakan JavaScript (atau jQuery).
Misalnya, diberikan sesuatu seperti:
http://www.sitename.com/article/2009/09/14/this-is-an-article/
Saya ingin mendapatkan:
http://www.sitename.com/
Apakah ekspresi reguler adalah taruhan terbaik? Jika demikian, pernyataan apa yang dapat saya gunakan untuk menetapkan URL dasar yang diekstraksi dari string yang diberikan ke variabel baru?
Saya sudah melakukan pencarian ini, tetapi semua yang saya temukan di dunia JavaScript tampaknya berputar mengumpulkan informasi ini dari URL dokumen aktual menggunakan location.host atau yang serupa.
javascript
regex
string
url
Mengerjakan dgn kurang baik
sumber
sumber
Jawaban:
Sunting: Beberapa mengeluh bahwa itu tidak mempertimbangkan protokol akun. Jadi saya memutuskan untuk memutakhirkan kode, karena ditandai sebagai jawaban. Bagi mereka yang suka kode satu baris ... maaf ini sebabnya kami menggunakan kode minimator, kode harus dapat dibaca manusia dan cara ini lebih baik ... menurut saya.
Atau gunakan solusi Davids dari bawah.
sumber
url = 'sitename.com/article/2009/09/14/this-is-an-article'; newurl = 'http://' + url.split('/')[0];
//now url === "http:://stackoverflow.com"
checkout::
Browser berbasis WebKit, Firefox pada versi 21 dan versi Internet Explorer saat ini (IE 10 dan 11) menerapkan
location.origin
.location.origin
termasuk protokol , domain, dan opsional port URL.Misalnya,
location.origin
dari URLhttp://www.sitename.com/article/2009/09/14/this-is-an-article/
tersebuthttp://www.sitename.com
.Untuk menargetkan browser tanpa dukungan untuk
location.origin
menggunakan polyfill ringkas berikut:sumber
window.location.hostname
akan kehilangan nomor port jika diberikan, jadi gunakanwindow.location.host
. Jadi 'basename' lengkap termasuk garis miring akan:window.location.protocol+"//"+window.location.host + "/";
Tidak perlu menggunakan jQuery, cukup gunakan
sumber
Tidak ada alasan untuk melakukan splits untuk mendapatkan path, nama host, dll dari string yang merupakan tautan. Anda hanya perlu menggunakan tautan
Anda dapat dengan mudah melakukannya dengan menambahkan elemen jQuery dan membaca attrnya.
sumber
sumber
Kemudian :
Untuk permintaan Anda, Anda perlu:
Ulasan 07-2017: Itu bisa juga lebih elegan & memiliki lebih banyak fitur
Kemudian
Keren!
sumber
Jika Anda menggunakan jQuery, ini adalah cara yang agak keren untuk memanipulasi elemen dalam javascript tanpa menambahkannya ke DOM:
sumber
myAnchor.prop('hostname')
. Saya menduga bahwa jQuery telah berubah dalam 5 tahun terakhir ... Terima kasih atas jawabannya!Pendekatan yang ringan tapi lengkap untuk mendapatkan nilai-nilai dasar dari representasi string dari sebuah URL adalah aturan regexp Douglas Crockford:
Jika Anda mencari toolkit manipulasi URL yang lebih kuat, cobalah URI.js. Ini mendukung getter, setter, normalisasi url, dll.
Jika Anda mencari Plugin jQuery, maka jquery.url.js akan membantu Anda
Cara yang lebih sederhana untuk melakukannya adalah dengan menggunakan elemen jangkar, seperti yang disarankan @epascarello. Ini memiliki kekurangan bahwa Anda harus membuat Elemen DOM. Namun ini bisa di-cache dalam penutupan dan digunakan kembali untuk banyak url:
Gunakan seperti ini:
sumber
Yah, objek URL API menghindari pemisahan dan pembuatan url secara manual.
sumber
Jika Anda mengekstraksi informasi dari window.location.href (bilah alamat), gunakan kode ini untuk mendapatkan
http://www.sitename.com/
:Jika Anda memiliki string,,
str
yaitu URL yang arbitrer (bukan window.location.href), maka gunakan ekspresi reguler:Saya, seperti semua orang di Semesta, benci membaca ekspresi reguler, jadi saya akan memecahnya dalam bahasa Inggris:
Tidak perlu membuat elemen DOM atau melakukan sesuatu yang gila.
sumber
Saya menggunakan regex sederhana yang mengekstrak host dari url:
dan gunakan seperti ini
Catatan, jika
url
tidak berakhir dengan/
yanghost
tidak akan berakhir dalam/
.Berikut ini beberapa tes:
sumber
Anda dapat menggunakan kode di bawah ini untuk mendapatkan berbagai parameter URL Saat Ini
sumber
Anda kemudian dapat menggunakannya seperti ini ...
Nilai url akan menjadi ...
"Var url" juga mengandung dua metode.
Dalam hal ini nilai paramQ akan menjadi 1.
Nilai allParameters akan menjadi nama parameter saja.
Diuji pada IE, chrome dan firefox.
sumber
Daripada harus memperhitungkan window.location.protocol dan window.location.origin, dan mungkin kehilangan nomor port yang ditentukan, dll., Ambil semuanya hingga ke "/" ke-3:
sumber
Ini bekerja:
sumber
location.pathname = '/'
Anda dapat melakukannya menggunakan regex:
apakah itu cocok?
sumber
Untuk mendapatkan asal usul url apa pun, termasuk jalur di dalam situs web (
/my/path
) atau schemaless (//example.com/my/path
), atau full (http://example.com/my/path
) saya menyusun fungsi cepat.Dalam cuplikan di bawah ini, ketiga panggilan harus dicatat
https://stacksnippets.net
.sumber
Ini bekerja untuk saya:
sumber
window.location.href memberikan alamat url saat ini dari bilah alamat browser
itu bisa apa saja seperti https://stackoverflow.com/abc/xyz atau https://www.google.com/search?q=abc tilllastbackslashregex.exec () jalankan regex dan retun string yang cocok sampai backslash terakhir yaitu https : //stackoverflow.com/abc/ atau https://www.google.com/ masing-masing
sumber
Cara yang baik adalah dengan menggunakan
URL
objek api asli JavaScript . Ini memberikan banyak bagian url yang bermanfaat.Sebagai contoh:
Seperti yang Anda lihat di sini, Anda hanya dapat mengakses apa pun yang Anda butuhkan.
Sebagai contoh:
console.log(urlObject.host); // "stackoverflow.com"
doc untuk URL
sumber