J'ai écrit un validateur d'URL pour un projet sur lequel je travaille. Pour mes besoins cela fonctionne très bien, sauf quand la dernière partie de l'URL dépasse 22 caractères. Mon expression:Flex 3 Expression régulière Problème
/((https?):\/\/)([^\s.]+.)+([^\s.]+)(:\d+\/\S+)/i
Il attend une entrée qui ressemble à "http (s): // nom d'hôte: port/emplacement." Quand je lui donne l'entrée:
https://demo10:443/111112222233333444445
cela fonctionne, mais si je passe l'entrée
https://demo10:443/1111122222333334444455
il se casse. Vous pouvez le tester facilement au http://ryanswanson.com/regexp/#start. Curieusement, je ne peux pas reproduire le problème avec juste la partie pertinente (je pense) /(:\d+\/\S+)/i
. Je peux avoir autant de caractères que nécessaire/et cela fonctionne très bien. Des idées ou des bugs connus?
Edit: Voici un code pour un exemple d'application qui illustre le problème:
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
<mx:Script>
<![CDATA[
private function click():void {
var value:String = input.text;
var matches:Array = value.match(/((https?):\/\/)([^\s.]+.)+([^\s.]+)(:\d+\/\S+)/i);
if(matches == null || matches.length < 1 || matches[0] != value) {
area.text = "No Match";
}
else {
area.text = "Match!!!";
}
}
]]>
</mx:Script>
<mx:TextInput x="10" y="10" id="input"/>
<mx:Button x="178" y="10" label="Button" click="click()"/>
<mx:TextArea x="10" y="40" width="233" height="101" id="area"/>
</mx:Application>
Fonctionne très bien, merci! Vous avez oublié le slash après le d +, mais pas de soucis. https?: \/\/([^ \ s:.] + \.) * ([^ \ s:.] +): \ d + \/\ S + – Tommy