Quelqu'un a-t-il un regex pour valider les URL (PAS pour les trouver dans un passage de texte)? Un extrait JavaScript serait préférable.
La syntaxe réelle de l'URL est assez compliquée et difficile à représenter dans l'expression régulière. La plupart des regex d'apparence simple donneront de nombreux faux négatifs ainsi que des faux positifs. Voir pour l'amusement ces efforts mais même le résultat final n'est pas bon.
De plus, de nos jours, vous voudriez généralement autoriser l'IRI ainsi que l'URI de la vieille école, afin que nous puissions établir un lien vers des adresses valides comme:
http://en.wikipedia.org/wiki/Þ
http://例え.テスト/
Je n'irais que pour des vérifications simples: cela commence-t-il par une bonne méthode connue: nom? Est-il exempt d'espaces et de guillemets doubles? Si c'est le cas, l'enfer, c'est probablement assez bon.
Dans le réponse acceptéebobince c'est vrai: valider uniquement le nom du schéma,: //, et les espaces et les guillemets suffisent généralement. Voici comment la validation peut être implémentée en JavaScript:
var url = 'http://www.google.com';
var valid = /^(ftp|http|https):\/\/[^ "]+$/.test(url);
// true
ou
var r = /^(ftp|http|https):\/\/[^ "]+$/;
r.test('http://www.goo le.com');
// false
ou
var url = 'http:www.google.com';
var r = new RegExp('/^(ftp|http|https):\/\/[^ "]+$/');
r.test(url);
// false
Références pour la syntaxe:
Essayez ce regex
/(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/
Cela fonctionne mieux pour moi.
J'ai trouvé un certain succès avec ceci:
/^((ftp|http|https):\/\/)?www\.([A-z]+)\.([A-z]{2,})/
Ce n'est évidemment pas parfait mais cela a plutôt bien géré mes affaires
<html>
<head>
<title>URL</title>
<script type="text/javascript">
function validate() {
var url = document.getElementById("url").value;
var pattern = /(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/;
if (pattern.test(url)) {
alert("Url is valid");
return true;
}
alert("Url is not valid!");
return false;
}
</script>
</head>
<body>
URL :
<input type="text" name="url" id="url" />
<input type="submit" value="Check" onclick="validate();" />
</body>
</html>
Essayez ceci regex , cela fonctionne pour moi:
function isUrl(s) {
var regexp = /(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/
return regexp.test(s);
}
J'utilise l'expression régulière/^ [a-z] +: [^:] + $/i pour la validation d'URL. Voir un exemple de mon cross-browser InputKeyFilter code avec validation d'URL.
<!doctype html>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>Input Key Filter Test</title>
<meta name="author" content="Andrej Hristoliubov [email protected]">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<!-- For compatibility of IE browser with audio element in the beep() function.
https://www.modern.ie/en-us/performance/how-to-use-x-ua-compatible -->
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<link rel="stylesheet" href="https://rawgit.com/anhr/InputKeyFilter/master/InputKeyFilter.css" type="text/css">
<script type="text/javascript" src="https://rawgit.com/anhr/InputKeyFilter/master/Common.js"></script>
<script type="text/javascript" src="https://rawgit.com/anhr/InputKeyFilter/master/InputKeyFilter.js"></script>
</head>
<body>
URL:
<input type="url" id="Url" value=":"/>
<script>
CreateUrlFilter("Url", function(event){//onChange event
inputKeyFilter.RemoveMyTooltip();
var elementNewInteger = document.getElementById("NewUrl");
elementNewInteger.innerHTML = this.value;
}
//onblur event. Use this function if you want set focus to the input element again if input value is NaN. (empty or invalid)
, function(event){ this.ikf.customFilter(this); }
);
</script>
New URL: <span id="NewUrl"></span>
</body>
</html>
Voir aussi ma page exemple du filtre de clé d'entrée .
/(?:http[s]?\/\/)?(?:[\w\-]+(?::[\w\-]+)?@)?(?:[\w\-]+\.)+(?:[a-z]{2,4})(?::[0-9]+)?(?:\/[\w\-\.%]+)*(?:\?(?:[\w\-\.%]+=[\w\-\.%!]+&?)+)?(#\w+\-\.%!)?/
essayez avec ceci:
var RegExp =/^(?:(?:https?|ftp):\/\/)(?:\S+(?::\S*)?@)?(?:(?!10(?:\.\d{1,3}){3})(?!127(?:\.\d{1,3}){3})(?!169\.254(?:\.\d{1,3}){2})(?!192\.168(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z\u00a1-\uffff0-9]+-?)*[a-z\u00a1-\uffff0-9]+)(?:\.(?:[a-z\u00a1-\uffff0-9]+-?)*[a-z\u00a1-\uffff0-9]+)*(?:\.(?:[a-z\u00a1-\uffff]{2,})))(?::\d{2,5})?(?:\/[^\s]*)?$/i;
Essayez ça ça marche pour moi:
/^(http[s]?:\/\/){0,1}(w{3,3}\.)[-a-z0-9+&@#\/%?=~_|!:,.;]*[-a-z0-9+&@#\/%=~_|]/;
Vous pouvez simplement utiliser type="url"
Dans votre entrée et le vérifier avec checkValidity()
dans js
Par exemple:
your.html
<input id="foo" type="url">
your.js
$("#foo").on("keyup", function() {
if (this.checkValidity()) {
// The url is valid
} else {
// The url is invalid
}
});
Après une longue recherche, je construis cette expression reg. J'espère que cela aidera les autres aussi .......
url = 'https://google.co.in';
var re = /[a-z0-9-\.]+\.[a-z]{2,4}\/?([^\s<>\#%"\,\{\}\\|\\\^\[\]`]+)?$/;
if (!re.test(url)) {
alert("url error");
return false;
}else{
alert('success')
}