Visualizzazione dei risultati da 1 a 2 su 2

Discussione: Bug RegExp

  1. #1

    Bug RegExp

    Salve ragazzi mi sa che c'è un bel bug qui e l'ho riscontrato sia in firefox che in IE.
    In pratica sembra che non vengano rilevate le occorrenze corrispondenti a un pattern formato dal \b seguito da un carattere accentato (\b[àèìòù],\bà,\bà+ ecc...).

    Supponiamo di avere il seguente codice:
    codice:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
    <html>
    	<head>
    		<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
    		<title>Untitled Document</title>
    		<script type='text/javascript'>										
    			function replace_string(button){
    				var input=document.getElementById('stringa');
                                         var str=input.value;
    				str=str.replace(new RegExp(/\b[àèìòù]/g),"");
    				input.value=str;
    			}
    		</script>
    	</head>
    	<body>
                      <form>
    		<input type='text' name='stringa' id='stringa'>
                       <button onclick='replace_string(this);return false;'>Prova</button>
    		
    	         </form>			
    	</body>
    </html>
    Copiate e incollate,dopodichè apritelo con il vostro browser.
    Nel campo input inserite una stringa che "matchi" il pattern (ad esempio àbc ùvz) e premete
    il pulsante: noterete che non accade assolutamente niente! (mentre come forse avrete capito dovrebbero essere sostituite,nell'esempio fatto,à e ù con una stringa vuota).
    Ma quello che più mi fa credere che si tratti un bug è che se cambiamo \b con ^ o \s avverrà la sostituzione (nel primo caso verrà eliminata la à nel secondo la ù e lo spazio che la precede).
    Allora?Vincerò il premio Nobel?
    Scherzi a parte vorrei sapere se riscontratelo stesso problema: non vorrei che sia qualcosa ceh riguardi solo me...ma non credo.

  2. #2
    Non &egrave; un bug, &egrave; che ECMA (Javascript) supporta i word boundaries solamente per il set ASCII ([a-zA-Z0-9])
    Infatti, leggendo http://www.regular-expressions.info/wordboundaries.html e seguendo il link http://www.regular-expressions.info/refflavors.html si evince che ECMA (Javascript) per quanto riguarda \b (at the beginning or end of a word) supporta ascii, al contrario, per esempio, di java o perl, che invece supportano anche le accentate come word boundaries..

    Aggiungo (a posteriori) una elucubrazione:
    Una soluzione (parziale) potrebbe essere:
    codice:
    str=str.replace(new RegExp(/[àèìòù]\b/g),"");
    che cancella s&igrave; le accentate ad inizio parola, ma anche 'dentro' la parola.
    E non so se ti pu&ograve; andare bene.
    Ci ragioneremo ...

    That's all!

    HTH
    Zappa
    [PC:Presario 2515EU][Cpu:P4@2.3GHz][Ram: 512M][HDU:80G@5400 RPM]
    [Wireless:LinkSys][OS: Ubuntu 9.04 - Jaunty Jackalope]

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.