Corrispondenza di una barra in avanti con un’espressione regolare

Non ho molta esperienza con JavaScript ma sto provando a creare un sistema di tag che, invece di usare @ o # , userebbe / .

 var start = /#/ig; // @ Match var word = /#(\w+)/ig; //@abc Match 

Come potrei usare un / invece del # . Ho provato a fare var slash = '/' e aggiungere + slash + , ma non è andata a buon fine.

Puoi sfuggirti in questo modo.

 /\//ig; // Matches / 

o semplicemente usare indexOf

 if(str.indexOf("/") > -1) 

Devi sfuggire al / con un \ .

 /\//ig // matches / 

Nelle espressioni regolari, “/” è un carattere speciale che deve essere sfuggito (contrassegnato da AKA ponendo un \ \ \ \ prima di annullare qualsiasi funzione specializzata che potrebbe servire).

Ecco di cosa hai bisogno:

 var word = /\/(\w+)/ig; // /abc Match 

Leggi i caratteri speciali RegEx qui: http://www.regular-expressions.info/characters.html

Se vuoi usare / devi scappare con un \

 var word = /\/(\w+)/ig; 

Puoi anche aggirare la gestione speciale di JS della barra diretta racchiudendola in un gruppo di caratteri, in questo modo:

 const start = /[/]/g; "/dev/null".match(start) // => ["/", "/"] const word = /[/](\w+)/ig; "/dev/null".match(word) // => ["/dev", "/null"] 

Ho riscontrato due problemi relativi a quanto precede, durante l’estrazione del testo delimitato da \ e / , e ho trovato una soluzione che si adatta a entrambi, oltre all’utilizzo del new RegExp , che richiede \\\\ all’inizio. Questi risultati sono in Chrome e IE11.

L’espressione regolare

 /\\(.*)\//g 

non funziona. Penso che // sia interpretato come l’inizio di un commento nonostante il carattere di escape. L’espressione regolare (ugualmente valida nel mio caso sebbene non in generale)

 /\b/\\(.*)\/\b/g 

non funziona neanche. Penso che il secondo / termini l’espressione regolare nonostante il carattere di fuga.

Ciò che funziona per me è rappresentare / come \x2F , che è la rappresentazione esadecimale di / . Penso che sia più efficiente e comprensibile rispetto all’utilizzo del new RegExp , ma ovviamente è necessario un commento per identificare il codice esadecimale.

Forward Slash è un carattere speciale, quindi devi aggiungere una barra rovesciata prima della barra diretta per farlo funzionare

 $patterm = "/[0-9]{2}+(?:-|.|\/)+[a-zA-Z]{3}+(?:-|.|\/)+[0-9]{4}/"; 

dove / rappresenta la ricerca / In questo modo tu