2017-12-05 1 views
-1

Ich versuche, eine Funktion zu schreiben, die Konsonanten vom Anfang des Wortes zum Ende des Wortes mit $ 2 $ 1 bewegt.Regex Group Capture, um Teile des Wortes Orte zu tauschen

Mein Code ist unten und ich habe das Problem erforscht und mehrere Variationen meiner Funktion versucht. Kann nicht verstehen, warum es nicht funktioniert.

function groupCap(s){ 
    str = s.replace(/(^[b-df-hj-np-tv-z]+)(\.$)/, '$2$1'); 
    return str; 
} 
groupCap("map"); 
+1

Beginnen Sie damit, zu beschreiben, was Ihrer Meinung nach Ihre Regex macht. – CBroe

+1

's.replace (/^([b-df-hj-np-tv-z] +) (. *) /, '$ 2 $ 1')'? '(\. $)' passt nur auf einen Punkt und das Ende der Zeichenkette danach. –

+0

@Wiktor Stribizew, können Sie es beantworten, damit ich es als beantwortet markieren kann? –

Antwort

1

Beachten Sie, dass \.$ einen Punkt paßt und dann behauptet, die Position am Ende des Strings. Sie müssen alle Zeichen, die sich in der Zeichenfolge befinden, zuordnen und in Gruppe 2 einfangen.

Verwenden

function groupCap(s){ 
 
    str = s.replace(/^([b-df-hj-np-tv-z]+)(.*)/, '$2$1'); 
 
    return str; 
 
} 
 
console.log(groupCap("map"));

ersetzen .* mit [^]*, wenn Zeilenumbrüche in der Zeichenfolge als . kann nicht Zeile Zeichen überein brechen und [^] Matches jede char andere als nichts, dass ist, alle Zeichen in der BMP-Ebene.

+1

Danke für zusätzliche Regex info @Wiktor Stribiżew, viel sehr geschätzt. Ich kann immer noch nicht glauben, dass ich \ benutzte. schau es an und versuche alle möglichen Variationen, ohne es zu merken. –

Verwandte Themen