2016-02-21 14 views
7

Sto cercando di capire che il carattere di trattino - deve essere evaso usando la barra retroversa in espressioni regolari?Devo sfuggire al carattere di trattino nell'espressione regolare?

Considerate questo:

var url  = '/user/1234-username'; 
var pattern = /\/(\d+)\-/; 
var match = pattern.exec(url); 
var id  = match[1]; // 1234 

Come si vede nella regex sopra, sto cercando di estrarre il numero di id dall'URL. Inoltre sono sfuggito al personaggio - nella mia espressione regolare utilizzando backslash \. Ma quando rimuovo quella barra rovesciata, ancora tutto bene ....! In altre parole, entrambe queste vanno bene:

Ora voglio sapere, che uno è corretto (standard)? Devo sfuggire al carattere dash in regex?

+1

Penso che avete solo bisogno di sfuggire al cruscotto quando è all'interno di '[]' non sono sicuro però. –

+0

Non hai risposto alla tua stessa domanda? – jonrsharpe

+0

@jonrsharpe Cosa intendi esattamente? Se conosco la risposta, allora perché dovrei chiederlo? – Shafizadeh

risposta

12

È necessario sfuggire al carattere di trattino solo se potrebbe essere interpretato come un indicatore di intervallo (che può essere il caso in uno character class).

/-/  # matches "-" 
/[a-z]/ # matches any letter in the range between ASCII a and ASCII z 
/[a\-z]/ # matches "a", "-" or "z" 
/[a-]/  # matches "a" or "-" 
/[-z]/  # matches "-" or "z" 
+0

Ottima risposta .... +1 – Shafizadeh

2

- ha un significato solo all'interno di una classe di caratteri [], in modo che quando si è al di fuori di esso non c'è bisogno di fuggire -

+0

Ah ok, tnx ... +1 – Shafizadeh

Problemi correlati