Newsgroup: it.comp.lang.javascript
Titolo: Suffisso Regex

Ho due indirizzi
http://www.alfa.com/2010/12/18/testotesto/
e
http://www.alfa.com/2010/12/18/testotesto/print/
vorrei una Regex vera per la prima url e falsa per la second ritornando 
il testo.
Ho provato
^(
http://www
\.alfa\.com/(.*?/){4})?$
o
^(
http://www
\.alfa\.com/(.*?/){4})[^(\?sp=true)]$
Ma non ci riesco
Mi aiutate?

 ^(
http://www
\.alfa\.com/(.*?/){4})?$
Sembrerebbe quasi che tu stia contando gli / ... in tal caso, io userei 
split (array risultante con length=7) anziché regexp.
Specifica meglio il contesto.

Cristiano Larghi ha scritto quanto segue il 19/12/2010 9.45>

Ho una routine che contro la url e dev'essere per forza una regex.
se l'url è
http://www.alfa.com/nnnn/nn/nn/nnnnn/
allora deve aggiungere alla fine print/
se invece l'url è
http://www.alfa.com/nnnn/nn/nn/nnnnn/print/
non deve fare niente, altrimenti mi ricicla all'infinito.
ty.

 ty.
(/(.*n\/).*/,"$1print/")
-- 
    * b *
  *   y   *
*   Piero   *
#v+
-beati monocoli in terra caecorum-
#v-


Non mi va
tiene presente che nnnnn sono caratteri variabili
l'url potrebbe essere:
http://www.alfa.com/nnnn/nn/nn/pront/print/
non c'č modo di sapere i caratteri del "print/" finale
so solo il numero delle barre, piů o meno cosě:
http://www.alfa.com/\d{4}/\d{2}/\d{2}/??????/
http://www.alfa.com/\d{4}/\d{2}/\d{2}/??????/print/

 so solo il numero delle barre, pi o meno cos :



-- 
http://interno.comze.com

Non riesco a capire


> mi serve all'incontrario per omogeneizzarlo alle altre ricerche.
test(/^.+print\/$/)
torna vero se l'url finisce con print/
invece a me serve che torna falso
questo perché la routine che usa questa regex non la posso modificare e 
quindi vuole un valore "vero" per compiere una certa azione.

 questo perch la routine che usa questa regex non la posso modificare e


Non ci riesco.
Per invertire
^.+print\/$
dovrei scrivere:
^.+[^(print\/)]$
Ma non funziona. Come va scritta?
Oreste ha scritto quanto segue il 19/12/2010 18.15>


var p = /^.+print\/$/;
var r = ! p.test(il tuo indirizzzo web);
r sarà true se non trova print/ alla fine


 var r = ! p.test(il tuo indirizzo web);
dovrei sconvolgere tutto lo script.
Non è possibile ottenere lo stesso risultato direttamente in regex?


 Non è possibile ottenere lo stesso risultato direttamente in regex?
Un qualcosa del tipo:
var l1="
http://www.alfa.com/2010/12/18/testotesto/
",
    l2="
http://www.alfa.com/2010/12/18/testotesto/print/
";
    var reg=/^[^\/]+(\/){2}([^\/]+\/){5}$/i;
    alert(reg.test(l1));
    alert(reg.test(l2));
?

 
Deo gratias! :)
Un vero rompicapo ste RegEx

 Un vero rompicapo ste RegEx
Spesso lo è anche capire esattamente cosa l'utente vuole, noi non 
conosciamo ciò che sta dietro ... Se comunque va bene ... bene!

 
http://www.alfa.com/2010/12/18/testotesto/print/
non regexp
var link="
http://www.alfa.com/2010/12/18/testotesto/print/
"
if (split(link,"/").reverse()[1]!="print") link+="print/"
Saluti. Carlo.

 Saluti. Carlo.
scusa...
if (link.split("/").reverse()[1]!="print") link+="print/"
Saluti. Carlo.

 
http://www.alfa.com/\d{4}/\d{2}/\d{2}/??????/print/
Ok, se lo spiegavi prima...
Prova questo esempio (sostituisci i "?" con del testo):
<html>
<head>
<script type="text/javascript">
function test_url() {
aa=document.getElementById("txt").value.replace(/^(.*\d.[^\/]*\/)$/,"$1print/");
     document.getElementById("txt").value=aa;
     }
</script>
</head>
<body>
<form>
<textarea id="txt" rows="10" cols="60">
http://www.alfa.com/1234/56/78/??????/
</textarea>
<br/>
<input onclick="test_url();" type="button" value="test" /> <input type="reset" value="canc"/>
</form>
</body></html>
-- 
    * b *
  *   y   *
*   Piero   *
#v+
-panem et circenses-
#v-