Newsgroup: it.comp.lang.javascript
Titolo: estrarre un link

Come faccio ad estrarre con una regex un link che contiene la parola 
"alfa" in una pagina html?

 "alfa" in una pagina html?
spiegati meglio ...
in generale:
 a) document.links restituisce l'elenco dei tag anchor della pagina:
 
https://developer.mozilla.org/En/DOM/document.links
 b) leggi la proprietà href: (tuooggetto.href)
 c) Per verificare semplicemente se contiene "alfa" eviterei le regexp e 
userei per esempio indexOf:
 
https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/
Objects/String/indexOf
 

 "alfa" in una pagina html?
Matchare quel link da solo ï¿œ banale  /(http.*alfa.*)/
ma per recuperlo da un'intera pagina html mischiato al testo, occorre
questa regexp  /(.|[\r\n])*(http.*alfa.*) .*(.|[\r\n])*/g,"$2"
-- 
    * b *
  *   y   *
*   Piero   *
#v+
M'hanno regalato un libro, ma si sono dimenticati del software.
#v-

 
Non mi va, ho provato con questa ma nemmeno:
/<a\shref="([^(<\/a>)]*?.*?alfa.*?)"/

>> "alfa" in una pagina html?
Con una regex? Perche' tanto odio?
Prova con document.getElementsByTagName(), e indexOf('alfa')

 /<a\shref="([^(<\/a>)]*?.*?alfa.*?)"/
L'ho provata e devo dirti che hai ragione.
Quella regexp presuppone di conoscere la fine del link, basterebbe anche
un solo carattere.
Conoscendo solo "alfa" dovresti seguire i consigli di Cristiano e Marco,
tuttavia se vuoi proprio una regexp bisogna complicare un po' le cose.
Non so fare di meglio, perï¿œ funziona:
<html><head>
<script type="text/javascript">
function url_only() {
 txt=document.getElementById("fnt").value.replace(/.*(http([^ ]+)).*|.*/g,"$1");
     document.getElementById("fnt").value=txt;
     }
function alfa_only() {
 txt=document.getElementById("fnt").value.replace(/.*(http([^ ]+)).*|.*/g,"$1/").replace(/(.|[\r\n])*(http.*alfa.*\/).*(.|[\r\n])*/g,"$2").replace(/\/\/$/g,"");
     document.getElementById("fnt").value=txt;
     }
</script>
</head>
<body>
<form>
 <textarea id="fnt" rows="25" cols="92">
..:: ISTRUZIONI PER LA CREAZIONE E CONFIGURAZIONE DELLA PROPRIA EMAIL ::..
Se non avete creato la casella aggiuntiva al momento della registrazione,
potete farlo adesso cliccando sul link seguente:
 - 
http://free.aruba.it/arubamailbox/FreeEmail.asp?IDOrdine=10414773
 -
Ecco i parametri da settare nel client di posta:
- Posta in arrivo(POP3): 
pop3.aruba.it
- Posta in uscita(SMTP): 
smtp.aruba.it
 (se si connette con Aruba.it)
- Nome account: l'indirizzo senza @
aruba.it
- Password: quella che avete scelto al momento della creazione della casella
Aruba.it mette a disposizione dei suoi clienti anche la possibilitï¿œ di
consultare la posta direttamente via web tramite il servizio WebMail:
quello relativo alle caselle "@aruba" che si trova
all'indirizzo 
http://webmail.alfa.it/
 e richiede l'inserimento
dell'indirizzo completo che desidera controllare e della relativa password.
Maggiori informazioni sono reperibili sul nostro
vademecum 
http://vademecum.aruba.it/
 in sezione "pannello mail",
specifica "webmail".
</textarea><br/>
<input type="button" value="url_only" onclick="url_only()"/>
 <input type="button" value="url_alfa_only" onclick="alfa_only()"/>
</form>
</body></html>
-- 
    * b *
  *   y   *
*   Piero   *
#v+
-cogito ergo sum-
#v-

Mi illudevo che fosse un problema di routine invece ï¿œ piuttosto complicato.
Non posso usare Javascript perchï¿œ devo applicarla su un testo esterno.
Grazie :)

"seguito" [by 
EiUSrk5AYnI5Xyq8UEZuIQ.user.aioe.org
] on Thu, 17 Dec 2009 


Questa ï¿œ quella giusta:
/(.|[\r\n])*(http.*alfa([^ ]+))(.|[\r\n])*/g,"$2"
-- 
    * b *
  *   y   *
*   Piero   *
#v+
-summum ius summa iniuria-
#v-
 

 Mi illudevo che fosse un problema di routine invece ï¿œ piuttosto complicato.
No, non e' affatto complicato, con qualunque parser HTML bastano 2-3 righe.
Ma farlo con le espressioni regolari, e' come girare una vite col 
martello, non e' lo strumento giusto.
http://kore-nordmann.de/blog/do_NOT_parse_using_regexp.html
Premesso questo, la regex puo' funzionare in situazioni controllate, ma 
e' certamente piu' complessa delle due righe che usano un parser.