Não tenho muita experiência com JavaScript, mas estou tentando criar um sistema de tags que, em vez de usar @
ou #
, usaria /
.
var start = /#/ig; // @ Match
var word = /#(\w+)/ig; //@abc Match
Como eu poderia usar um em /
vez do #
. Tentei fazer var slash = '/'
e adicionar + slash +
, mas falhou.
javascript
regex
iBrazilian2
fonte
fonte
Respostas:
Você pode escapar assim.
/\//ig; // Matches /
ou apenas use indexOf
if(str.indexOf("/") > -1)
fonte
Você precisa escapar
/
com um\
./\//ig // matches /
fonte
Se você quiser usar,
/
você precisa escapar com um\
var word = /\/(\w+)/ig;
fonte
Em expressões regulares, "/" é um caractere especial que precisa ser escapado (AKA sinalizado colocando um \ antes dele, negando assim qualquer função especializada que possa servir).
Aqui está o que você precisa:
var word = /\/(\w+)/ig; // /abc Match
Leia sobre os caracteres especiais RegEx aqui: http://www.regular-expressions.info/characters.html
fonte
Você também pode contornar o tratamento JS especial da barra, incluindo-a em um grupo de caracteres, assim:
const start = /[/]/g; "/dev/null".match(start) // => ["/", "/"] const word = /[/](\w+)/ig; "/dev/null".match(word) // => ["/dev", "/null"]
fonte
/[/]/
diferencia visualmente o delimitador final mais claramente do que/\//
./[/]/
é mais fácil de ler e funciona, mas, infelizmente, alguns validadores RegEx reportarão "Um delimitador sem escape deve ser escapado com uma barra invertida" mesmo dentro de um grupo de caracteres . Então, voltei para a/\//
forma feia .Você pode escapar dele precedendo-o
\
(tornando-o\/
) ou pode usarnew RegExp('/')
para evitar o escape da regex .Veja o exemplo em JSFiddle .
'/'.match(/\//) // matches / '/'.match(new RegExp('/') // matches /
fonte
Para mim, eu estava tentando corresponder
/
em uma data em C #. Eu fiz isso apenas 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 também deve ser capaz de usar de forma semelhante
(\/)
.fonte
Encontrei dois problemas relacionados com o anterior, ao extrair texto delimitado por
\
e/
, e encontrei uma solução que se adequa a ambos, diferente do usonew RegExp
, que requer\\\\
no início. Essas descobertas estão no Chrome e no IE11.A expressão regular
/\\(.*)\//g
não funciona. Acho que
//
é interpretado como o início de um comentário, apesar do caractere de escape. A expressão regular (igualmente válida no meu caso, embora não em geral)também não funciona. Acho que o segundo
/
termina a expressão regular, apesar do caractere de escape.O que funciona para mim é representar
/
como\x2F
, que é a representação hexadecimal de/
. Acho que é mais eficiente e compreensível do que usarnew RegExp
, mas é claro que é necessário um comentário para identificar o código hexadecimal.fonte
A barra para frente é um caractere especial, portanto, você deve adicionar uma barra invertida antes da barra para que funcione
$patterm = "/[0-9]{2}+(?:-|.|\/)+[a-zA-Z]{3}+(?:-|.|\/)+[0-9]{4}/";
onde / representa a pesquisa por / Desta forma, você
fonte