2016-04-10 2 views
0

Я хочу переопределить второй согласованный egex с первым согласованным регулярным выражением, но мой код видит второй согласованный egex и удаляет первый (не запоминающий).переопределить второе совпадающее регулярное выражение с первым совпадающим регулярным выражением

Ex: Если я типа "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, если код видит «La» до того, как я не хочу «M»:/ – pinug

+1

Из того, что я понимаю, возможно, если вы сделаете второй такой, как '/ [^ L] (am)/g' и do' text2 .replace (/ [^ L] (am)/g, (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

спасибо sir :) – pinug

+0

Добро пожаловать. – trincot

1

Я думаю, это нормально

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

т может быть, проще.

+0

да сэр, но я также хочу «M» ex: если тип «bam» должен напечатать «bM», «am» -> «M» ,,,, «kam» -> «kM»:/не работает в случае «bam» «kam» «am» и т. д. и т. д. – pinug

+0

я думаю, что это так – Redu

Смежные вопросы