Как определить, является ли строка в формате URL с помощью javascript?
Я думаю, что название вопроса, похоже, объясняет все.
Я хочу определить, является ли строка в формате URL или не используется javascript.
Любая помощь была оценена.
Ответы
Ответ 1
Попробуйте это -
function isUrl(s) {
var regexp = /(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/
return regexp.test(s);
}
use: if (isUrl ( " http://www.page.com" )) alert ( "is correct" ) else предупреждение ( "неверно" );
Ответ 2
попробуйте что-то вроде этого:
function isUrl(s) {
var regexp = /(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)? (\/|\/([\w#!:.?+=&%@!\-\/]))?/
return regexp.test(s);
}
Ответ 3
function IsURL(url) {
var strRegex = "^((https|http|ftp|rtsp|mms)?://)"
+ "?(([0-9a-z_!~*'().&=+$%-]+: )?[0-9a-z_!~*'().&=+$%-][email protected])?" //ftp的[email protected]
+ "(([0-9]{1,3}\.){3}[0-9]{1,3}" // IP形式的URL- 199.194.52.184
+ "|" // 允许IP和DOMAIN(域名)
+ "([0-9a-z_!~*'()-]+\.)*" // 域名- www.
+ "([0-9a-z][0-9a-z-]{0,61})?[0-9a-z]\." // 二级域名
+ "[a-z]{2,6})" // first level domain- .com or .museum
+ "(:[0-9]{1,4})?" // 端口- :80
+ "((/?)|" // a slash isn't required if there is no file name
+ "(/[0-9a-z_!~*'().;?:@&=+$,%#-]+)+/?)$";
var re=new RegExp(strRegex);
return re.test(url);
}
![Regular expression visualization]()
Demuggex Demo (улучшенная версия, которая соответствует также localhost)
Ответ 4
Попробуйте этот код. Это выражение более полно и учитывает IP-адрес:
function checkUrl(s) {
var regexp = /^(?:http(s)?:\/\/)?[\w.-]+(?:\.[\w\.-]+)+[\w\-\._~:/?#[\]@!\$&'\(\)\*\+,;=.]+$/
return regexp.test(s); }
Ответ 5
Вы можете использовать регулярное выражение для проверки строки
^s?https?:\/\/[-_.!~*'()a-zA-Z0-9;\/?:\@&=+\$,%#]+$
Регулярные выражения и Javascript
Ответ 6
Один для будущего с помощью конструктор URL и базовый оператор try catch, он поддерживается в большинстве современных браузеров. Очевидно, нет поддержки IE...
const isUrl = (str) => {
try {
new URL(str);
return true;
} catch () {
return false;
}
}
Если URL-адрес действителен, он будет разбираться конструктором и возвращать true.
Если строка не является допустимым URL, конструктор будет выжимать синтаксическую ошибку, которая будет схвачена и вернет false.