No tengo mucha experiencia con JavaScript, pero estoy tratando de crear un sistema de etiquetas que, en lugar de usar @
o #
, usaría /
.
var start = /#/ig; // @ Match
var word = /#(\w+)/ig; //@abc Match
¿Cómo podría usar un en /
lugar de #
. Intenté hacer var slash = '/'
y agregar + slash +
, pero falló.
javascript
regex
iBrazilian2
fuente
fuente
Respuestas:
Puedes escapar así.
/\//ig; // Matches /
o simplemente use indexOf
if(str.indexOf("/") > -1)
fuente
Necesitas escapar
/
con un\
./\//ig // matches /
fuente
Si quieres usar,
/
debes escapar con un\
var word = /\/(\w+)/ig;
fuente
En las expresiones regulares, "/" es un carácter especial que necesita ser escapado (AKA marcado colocando un \ antes de él, negando así cualquier función especializada que pueda servir).
Esto es lo que necesita:
var word = /\/(\w+)/ig; // /abc Match
Lea sobre los caracteres especiales de RegEx aquí: http://www.regular-expressions.info/characters.html
fuente
También puede evitar el manejo especial de JS de la barra inclinada encerrándola en un grupo de caracteres, así:
const start = /[/]/g; "/dev/null".match(start) // => ["/", "/"] const word = /[/](\w+)/ig; "/dev/null".match(word) // => ["/dev", "/null"]
fuente
/[/]/
diferencia visualmente el delimitador final con más claridad que/\//
./[/]/
es más fácil de leer y funciona, pero desafortunadamente, algunos validadores de RegEx informarán "Un delimitador sin escape debe escaparse con una barra invertida" incluso dentro de un grupo de caracteres . Entonces, volví a la/\//
forma fea .Puede escapar de él precediéndolo con un
\
(haciéndolo\/
), o puede usarlonew RegExp('/')
para evitar escapar de la expresión regular .Vea el ejemplo en JSFiddle .
'/'.match(/\//) // matches / '/'.match(new RegExp('/') // matches /
fuente
Para mí, estaba tratando de hacer coincidir
/
en una fecha en C #. Lo hice simplemente usando(\/)
:string pattern = "([0-9])([0-9])?(\/)([0-9])([0-9])?(\/)(\d{4})"; string text = "Start Date: 4/1/2018"; Match m = Regex.Match(text, pattern); if (m.Success) { Console.WriteLine(match.Groups[0].Value); // 4/1/2018 } else { Console.WriteLine("Not Found!"); }
JavaScript también debería poder usar de manera similar
(\/)
.fuente
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 usarnew RegExp
, que requiere\\\\
al principio. Estos hallazgos están en Chrome e IE11.La expresión regular
/\\(.*)\//g
No funciona. Pienso que el
//
se interpreta como el inicio de un comentario a pesar del carácter de escape. La expresión regular (igualmente válida en mi caso, aunque no en general)tampoco funciona. Creo que el segundo
/
termina la expresión regular a pesar del carácter de escape.Lo que me funciona es representar
/
como\x2F
, que es la representación hexadecimal de/
. Creo que es más eficiente y comprensible que usarlonew RegExp
, pero, por supuesto, necesita un comentario para identificar el código hexadecimal.fuente
Forward Slash es un carácter especial, por lo que debe 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
fuente