2016-04-08 17 views
0

Ich möchte das folgende Zeichen nach dem übereinstimmenden Zeichen (ad) drucken, aber ich weiß nicht, wie man es als Argument nennt, irgendeine Hilfe?Ausdruck letztes Zeichen nach Regex

$(document).ready(function(){ 
 

 
$("#ta_1").keyup(function(event) { 
 
    
 
    var text2 = $(this).val(); 
 
    
 
    text2 = text2.replace(/ad(?=a|ı|o|u|R|T|S|B|q|Y|L|Ğ|I|D)/g, "D$2"); 
 
    
 
    $("#ta_1").val(text2); 
 
    
 
}); 
 
});
<!DOCTYPE html> 
 
<html lang="en"> 
 
<head> 
 
<title></title> 
 
<meta charset="utf-8" /> 
 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
</head> 
 
<body> 
 
\t \t \t 
 
<textarea id="ta_1" rows="5" cols="28" ></textarea> 
 

 
</body> 
 
</html>

+1

Könnten Sie ein wenig in die Tiefe gehen, was Sie fragen? Was versuchst du zu tun (sei spezifisch) und was funktioniert nicht? – kirkpatt

+1

ein Beispiel wäre auch hilfreich. '" blau ".replace (/ ue /," arg ") # =>" blarg "'. Willst du drucken, 'blarg',' arg', 'ue' etc. – PhilVarg

+0

@kirkpatt ja natürlich als Beispiel, 1) typed string: ada, ziel string (was ich will): Da ,,, 2) getippt string: adS, Zielzeichenfolge: DS ,,, etc etc .. – pinug

Antwort

1

Es gibt ein paar Möglichkeiten, dies zu tun, und der Code war ziemlich nah an einer von ihnen; Sie mussten nur die $1 entfernen. Eine andere Lösung wäre capture statt lookahead.

"adoadR".replace(/ad(?=a|ı|o|u|R|T|S|B|q|Y|L|Ğ|I|D)/g, "D$1"); // #0: "D$1oD$1R" 
"adoadR".replace(/ad(?=a|ı|o|u|R|T|S|B|q|Y|L|Ğ|I|D)/g, "D"); // #1: "DoDR" 
"adoadR".replace(/ad(a|ı|o|u|R|T|S|B|q|Y|L|Ğ|I|D)/g, "D$1"); // #2: "DoDR" 

Um weiter zu optimieren, sollten Sie diesen Wechsel in eine character class kollabieren auch:

"adoadR".replace(/ad(?=[aıouRTSBqYLĞID])/g, "D"); // #3: "DoDR" 
"adoadR".replace(/ad([aıouRTSBqYLĞID])/g, "D$1"); // #4: "DoDR" 

Da Capturing teuer ist, würde ich davon abraten, da Sie es nicht brauchen.

Meine # 3 ist die beste Lösung.

+0

danke sir :) – pinug