128 votes

Correspondance d'une barre oblique avec une regex

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 @ o # utiliserait / .

var start = /#/ig; // @ Match

var word = /#(\w+)/ig; //@abc Match

Comment pourrais-je utiliser un / au lieu de la # . J'ai essayé de faire var slash = '/' et en ajoutant + slash + mais cela a échoué.

5voto

nupanick Points 73

Vous pouvez également contourner la gestion spéciale de la barre oblique par JS 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"]

0voto

Ronald Davis Points 1

J'ai rencontré deux problèmes liés à ce qui précède, lors de l'extraction de texte délimité par \ y / et j'ai trouvé une solution qui s'adapte aux deux, autre que l'utilisation de new RegExp ce qui nécessite \\\\ au départ. Ces résultats sont obtenus dans Chrome et IE11.

L'expression régulière

/\\(.*)\//g

ne fonctionne 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 deuxième / termine l'expression régulière malgré le caractère d'échappement.

Ce qui marche 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 plus compréhensible que d'utiliser new RegExp mais il faut bien sûr un commentaire pour identifier le code hexadécimal.

0voto

Junaid Lodhi Points 1

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

0voto

vapcguy Points 48

Pour moi, j'essayais de correspondre au / 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 être en mesure d'utiliser de manière similaire (\/) .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X