2012-02-21 11 views
5

ho questo semplice regex per prendere l'ultima istanza di 'girare a 123' in una forma (ho un altro regex per il corpo principale):Javascript regex non corrispondenti ultimo carattere in forma

currenttext=currenttext.replace(/([^>])(turn\s+to\s+)(\d+)$/i,"$1<tt ref=\"$3\">$2$3</tt>"); 

che per esempio sostituti girare a 123 ... con

<tt ref="123">turn to 123</tt>... 

... in ingresso forma viva. Tuttavia funziona solo se c'è una qualche forma di carattere dopo il il numero 123, che si tratti di un ritorno a capo o di un carattere visibile, che non riesco a capire dal momento che l'ancoraggio $ end non ha altro carattere prima del modello di memoria per le cifre numeriche. Senza un carattere successivo ottengo questo risultato:

<tt ref="12">turn to 12</tt>3 

, cioè non riesce a catturare completamente l'ultima cifra. Ho provato a mettere l'ancora $ all'interno della memoria paren ma non ho fatto alcuna differenza.

+0

In quale browser? Funziona per me, sotto nodo, Chromium e Firefox. –

+1

Non riesco a replicare questo comportamento, funziona in regexr: http://regexr.com?3031a –

+0

Non riesco a riprodurre questo. Eseguendo il seguente codice in una console javascript '" foo turn to 123 ".replace (/ ([^>]) (gira \ s + a \ s +) (\ d +) $/i," $ 1 $ 2 $ 3"); 'restituisce' "foo vai a 123" '. Potresti pubblicare il codice che causa il problema. –

risposta

2

Sono abbastanza sicuro che non vi sia nulla di sbagliato in questa espressione regolare. È necessario ottenere il testo errato come input currenttext. È possibile verificarlo controllando il testo corrente prima di eseguire questo codice (console.log (testo corrente) o avviso (testo corrente) o qualcosa del genere).

cose da guardare fuori per:

  • Stai usando substring (...) con (inizio, fine) invece di (inizio, fine + 1)?
  • Stai abbinando l'ultimo carattere come gruppo separato in un RegExp?
+1

Non ho idea di me stesso ora dove o che cosa stava causando l'errore ... ma è andato via. Penso sia giusto dire che comunque non c'era niente di sbagliato con le regex. – Beeblbrox

Problemi correlati