2016-04-10 46 views
0

最初の一致する正規表現で2番目の一致した正規表現を上書きしたいが、私のコードは一致した2番目のegexを見て、最初の(記憶していない)最初に一致する正規表現で一致した正規表現を最初に一致する正規表現

例:私は "baslamak" と入力した場合は、それが "basLMak" を印刷し、 "" でなければなりません...対象の文字列(私が欲しいもの)削除します。basLamak

$(document).ready(function(){ 
 

 
$("#ta_1").keyup(function(event) { 
 
    
 
var text2 = $(this).val(); 
 
    
 
text2 = text2.replace(/l(?=a)/g, "L"); 
 
text2 = text2.replace(/am/g, "M"); 
 
\t \t \t 
 
$("#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> 
 
    
 
<textarea id="ta_1" rows="5" cols="28" ></textarea> 
 
    
 
</body> 
 
    
 
</html>

+0

あなたの期待される結果に 'M'がありません。あなたのコードに' text2.replace(/ am/g、 "M"); – Shafizadeh

+0

@Shafizadeh "M"を欲しくない前にコードが "La"を見た場合:/ – pinug

+1

もしあなたが '/ [^ L](am)/ g'のように2番目を作って' text2 。/ m、n1)=>(n1 == "am" && "M")); '大丈夫です。 – Redu

答えて

1

([^L]|^)am 

を...と交換でキャプチャグループを保つ:

$1M 

だからあなたのコードになるでしょう:

$("#ta_1").keyup(function(event) { 
 
    var text2 = $(this).val(); 
 
    text2 = text2.replace(/l(?=a)/g, 'L'); 
 
    text2 = text2.replace(/([^L]|^)am/g, '$1M'); 
 
    $("#ta_1").val(text2); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input id="ta_1" type="text">

+0

ありがとうございます。 – pinug

+0

よろしくお願いします。 – trincot

1

私は、これはOK

text2.replace(/([^L]|\b)(am)/g, (m,n1,n2) => (n2=="am" && n1 +"M")); 

トンだと思いますもっと簡単な方法があるかもしれません。

あなたは、次の正規表現を使用でき
+0

はい、私はまた "M"を望んでいます: "bam"タイプの場合 "bM"、 "am" - > "M" ,,,, "kam" - > "kM" "bam" "kam" "am"などの場合にはうまくいきません – pinug

+0

そうですね。 – Redu