2010-11-08 9 views
1

qu'est-ce que cela signifie?Que fait ce regex javascript?

name = name. replace(/([A-Z]) /g, " -$1"); 

c'est js.

correction que je voulais dire name = name.replace(/([A-Z]) /g, "-$1");

+0

Quelle langue est-ce dans? – FrustratedWithFormsDesigner

+1

c'est JavaScript? Regex peut être formaté différemment selon le langage de programmation dans lequel vous le représentez. – zzzzBov

Répondre

2

Cela signifie:

Prenez "nom," la chaîne et de regarder pour chaque lettre majuscule suivi d'un espace. Lorsque vous trouvez une occurrence, remplacez-la par un trait d'union, puis la lettre. Une fois que vous avez fait cela pour toutes les occurrences, assignez cette nouvelle chaîne à la variable "name".

Par exemple, si « nom » est AB CD avant que cette ligne est exécutée, « name » sera A-BCD après cette ligne est exécutée.

+0

Je suis presque sûr que le/g signifie que c'est juste à la fin de la chaîne, non? J'ai testé ce très rapide en javascript et: "HEllo MY friends" a été remplacé par "HEllo M -Y friends". – Gazillion

+0

@Matt: Il recherche chaque lettre majuscule suivie d'un espace et l'espace est supprimé. – RoToRa

+0

Javascript peut ne pas reconnaître le drapeau/g. Si c'est quelque chose comme Perl alors/g signifie global. –

1

Très brièvement, le [A-Z] signifie correspondre une lettre majuscule, les /g moyens de bits font globalement (la chaîne d'entrée entière), et le bit -$1 signifie remplacer chaque groupe correspondant X avec -X. $1 fait référence au bit entre parenthèses dans le premier argument. Donc, si l'entrée est "HE LLO", vous obtiendrez "H-E LLO". Si l'entrée est "He LL o", vous devriez obtenir "He L-L o".

Je vous recommande de lire les expressions régulières car elles peuvent être très complexes.

+0

Que voulez-vous dire par? $ 1 fait référence au bit entre parenthèses dans le premier argument. – steve

+0

'$ 1' est ce qu'on appelle une" référence arrière ". Chaque paire de parenthèses définit une référence arrière qui peut être référencée plus tard par la syntaxe '$ n'. La première référence arrière est «$ 1», la seconde est «$ 2» et ainsi de suite. Ainsi, la partie "remplacer" de l'expression fait référence à la première référence arrière dans l'expression rationnelle. –

0

Après (A-Z) est un espace. Il ne doit donc correspondre que des caractères majuscules suivis d'un espace. Ceux-ci sont remplacés par "-" et le caractère d'origine (référence arrière). Donc pour la chaîne "BONJOUR MES AMIS" le résultat serait HELL -OM -YFriends. le /g signifie global, remplacez donc toutes les occurrences.

Essayé en Perl:

$var = "HELLO MY Friends"; 
$var =´ s/([A-Z])/-$1/g; 
print $var . "\n";