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é.
Vous pouvez y échapper comme ça.
/\//ig; // Matches /
ou utilisez simplement indexOf
if(str.indexOf("/") > -1)
Vous devez échapper au /
avec un \
.
/\//ig // matches /
Si vous voulez utiliser /
vous devez l’échapper avec un \
var Word = /\/(\w+)/ig;
Dans les expressions rationnelles, "/" est un caractère spécial à échapper (AKA est marqué en plaçant un\avant celui-ci, annulant ainsi toute fonction spécialisée qu'il pourrait remplir).
Voici ce dont vous avez besoin:
var Word = /\/(\w+)/ig; // /abc Match
Vous trouverez des informations sur les caractères spéciaux RegEx ici: http://www.regular-expressions.info/characters.html
Vous pouvez également contourner le traitement spécial par JS de la barre oblique en l'enfermant dans un groupe de caractères, comme suit:
const start = /[/]/g;
"/dev/null".match(start) // => ["/", "/"]
const Word = /[/](\w+)/ig;
"/dev/null".match(Word) // => ["/dev", "/null"]
Pour moi, j'essayais de faire correspondre le /
à 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 (\/)
.
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, à part l'utilisation de new RegExp
, 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)
/\b/\\(.*)\/\b/g
ne fonctionne pas non plus. Je pense que le second /
termine l'expression régulière malgré le caractère d'échappement.
Ce qui fonctionne pour moi est de représenter /
par \x2F
, qui est la représentation hexadécimale de /
. Je pense que c'est plus efficace et compréhensible que d'utiliser new RegExp
, mais il faut bien sûr un commentaire pour identifier le code hexadécimal.
La barre oblique est un caractère spécial, vous devez donc ajouter une barre oblique inversée 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 /Avec cette manière