javascript - sacar - diagonal invertida con numeros
Coincidencia de una barra diagonal hacia adelante con una expresión regular (7)
No tengo mucha experiencia con JavaScript, pero estoy tratando de crear un sistema de etiquetas que, en lugar de usar @
o #
, use /
.
var start = /#/ig; // @ Match
var word = /#(/w+)/ig; //@abc Match
¿Cómo podría usar un /
lugar de un #
? Intenté hacer var slash = ''/''
y agregar + slash +
, pero eso falló.
En expresiones regulares, "/" es un carácter especial que necesita ser escapado (AKA marcado colocando un / antes de él anulando así cualquier función especializada que pueda servir).
Esto es lo que necesitas:
var word = ///(/w+)/ig; // /abc Match
Lea sobre los caracteres especiales de RegEx aquí: http://www.regular-expressions.info/characters.html
Encontré dos problemas relacionados con lo anterior, al extraer texto delimitado por /
y /
, y encontré una solución que se ajusta a ambos, además de usar el new RegExp
, que requiere ////
al inicio. Estos hallazgos están en Chrome e IE11.
La expresión regular
///(.*)///g
No funciona. Creo que //
se interpreta como el comienzo de un comentario a pesar del carácter de escape. La expresión regular (igualmente válida en mi caso aunque no en general)
//b///(.*)///b/g
tampoco funciona Creo que el segundo /
termina la expresión regular a pesar del carácter de escape.
Lo que sí funciona para mí es representar /
as /x2F
, que es la representación hexadecimal de /
. Creo que es más eficiente y comprensible que usar el new RegExp
, pero por supuesto necesita un comentario para identificar el código hexadecimal.
Forward Slash es un carácter especial, por lo que debes agregar una barra invertida antes de la barra diagonal para que funcione
$patterm = "/[0-9]{2}+(?:-|.|//)+[a-zA-Z]{3}+(?:-|.|//)+[0-9]{4}/";
donde / representa la búsqueda de / De esta manera
Necesitas escapar el /
con un /
.
////ig // matches /
Puedes escapar de esta manera.
////ig; // Matches /
o simplemente usa indexOf
if(str.indexOf("/") > -1)
Si desea usar /
necesita escapar con un /
var word = ///(/w+)/ig;
También puede solucionar el manejo especial de JS de la barra inclinada al encerrarlo en un grupo de caracteres, de esta manera:
const start = /[/]/g;
"/dev/null".match(start) // => ["/", "/"]
const word = /[/](/w+)/ig;
"/dev/null".match(word) // => ["/dev", "/null"]