2010-10-26 8 views
2

Je viens de trouver ce regex en JavaScriptConfusion au sujet regex

var str=input.replace(/\0/g, "\\0"); 

Pouvez-vous s'il vous plaît me expliquer ce que cela signifie? Quelle est la signification de /\0/g et \\0?

Répondre

10

\0 est le caractère nul.

/\0/g est un modèle qui correspond à toutes les instances du caractère nul.

"\\0" est une chaîne qui sera affichée sous la forme "\0", car la première barre oblique inverse sert de caractère d'échappement pour la deuxième barre oblique inverse. Cette ligne de code remplace donc toutes les instances du caractère nul (qui est normalement illisible, sauf si vous utilisez une visionneuse hexadécimale) dans la chaîne input et les remplace par la chaîne lisible par l'utilisateur "\0", puis stocke le résultat dans la chaîne str.

+0

Est-ce vraiment vrai? Je ne pense pas que "\ 0" signifie le caractère nul; Je pense que cela signifie simplement le caractère "0" (0x0030). * edit * non je l'ai essayé et cette réponse est correcte. – Pointy

+0

Je peux l'obtenir pour travailler sur une chaîne comme 'var s = '\ 000';' - http://jsbin.com/ewina4 – Kobi

5

Il remplace les caractères nuls (\0 - Unicode 0x0) dans la chaîne avec une barre oblique inverse (\) suivi d'un 0.

var s = "asd0asd\x00asd"; 
console.log(s); 
s = s.replace(/\0/g, "\\0"); 
console.log(s); 

Et la sortie est:

asd0asdasd
asd0asd \ 0asd