Je n'ai pas beaucoup d'expérience avec JavaScript mais j'essaie de créer un système de balises qui, au lieu d'utiliser @
ou #
, utiliserait /
.
var start = /#/ig; // @ Match
var word = /#(\w+)/ig; //@abc Match
Comment pourrais-je utiliser un /
au lieu du #
. J'ai essayé de faire var slash = '/'
et d'ajouter + slash +
, mais cela a échoué.
javascript
regex
iBrésilien2
la source
la source
Réponses:
Vous pouvez y échapper comme ça.
/\//ig; // Matches /
ou utilisez simplement indexOf
if(str.indexOf("/") > -1)
la source
Vous devez vous échapper
/
avec un\
./\//ig // matches /
la source
Si vous souhaitez l'utiliser,
/
vous devez y échapper avec un\
var word = /\/(\w+)/ig;
la source
Dans les expressions régulières, "/" est un caractère spécial qui doit être échappé (AKA marqué en plaçant un \ avant, annulant ainsi toute fonction spécialisée qu'il pourrait servir).
Voici ce dont vous avez besoin:
var word = /\/(\w+)/ig; // /abc Match
Renseignez-vous sur les caractères spéciaux RegEx ici: http://www.regular-expressions.info/characters.html
la source
Vous pouvez également contourner la gestion JS spéciale de la barre oblique en la plaçant dans un groupe de caractères, comme ceci:
const start = /[/]/g; "/dev/null".match(start) // => ["/", "/"] const word = /[/](\w+)/ig; "/dev/null".match(word) // => ["/dev", "/null"]
la source
/[/]/
différencie visuellement le délimiteur de fin plus clairement que/\//
./[/]/
est plus facile à lire et fonctionne, mais malheureusement, certains validateurs RegEx rapporteront "Un délimiteur non échappé doit être échappé avec une barre oblique inverse" même dans un groupe de caractères . Donc, je suis revenu à la/\//
forme laide .Vous pouvez l'échapper en le précédant d'un
\
(en le faisant\/
), ou vous pouvez l'utilisernew RegExp('/')
pour éviter d'échapper à l'expression régulière .Voir l' exemple dans JSFiddle .
'/'.match(/\//) // matches / '/'.match(new RegExp('/') // matches /
la source
Pour moi, j'essayais de faire correspondre le
/
dans une date en C #. Je l'ai fait simplement en utilisant(\/)
: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 devrait également pouvoir utiliser de la même manière
(\/)
.la source
J'ai rencontré deux problèmes liés à ce qui précède, lors de l'extraction de texte délimité par
\
et/
, et j'ai trouvé une solution qui convient aux deux, autre que l'utilisationnew RegExp
, ce qui nécessite\\\\
au début. Ces résultats sont dans Chrome et IE11.L'expression régulière
/\\(.*)\//g
ne marche pas. Je pense que le
//
est interprété comme le début d'un commentaire malgré le caractère d'échappement. L'expression régulière (également valable dans mon cas mais pas en général)ne fonctionne pas non plus. Je pense que la seconde
/
met fin à l'expression régulière malgré le caractère d'échappement.Ce qui fonctionne pour moi, c'est de représenter
/
comme\x2F
, qui est la représentation hexadécimale de/
. Je pense que c'est plus efficace et compréhensible que l'utilisationnew RegExp
, mais bien sûr, il faut un commentaire pour identifier le code hexadécimal.la source
La barre oblique est un caractère spécial, vous devez donc ajouter une barre oblique inverse avant la barre oblique pour que cela fonctionne
$patterm = "/[0-9]{2}+(?:-|.|\/)+[a-zA-Z]{3}+(?:-|.|\/)+[0-9]{4}/";
où / représente la recherche de / De cette façon, vous
la source