replace () регулярное выражение, строка разрыва строки не работает javascript - PullRequest
3 голосов
/ 28 апреля 2020

У меня есть следующая строка bbcode типа [MSG]abc[/MSG], которую я хочу заменить дружественной строкой .... используя регулярное выражение

Мой код работает, когда bbcode находится только в первой строке, но когда Я поместил еще немного текста в тег [MSG] с разрывами строк ... он не работает ....

Что я делаю не так?

CODED TRIED

$("button").on("click", function(){
var textarea = $("#textarea").val();
 var regex = /\[MSG\](.*)\[\/MSG]/ig;

   
   textarea = textarea.replace(regex,"converted: $1 --");
   

$("div").text(textarea)

})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.8.0/jquery.min.js"></script>

hello [MSG]abc[/MSG]
<HR>
hello [MSG]a <BR>

bc[/MSG]
<HR>
<textarea id='textarea' rows=3>
hello [MSG]abc[/MSG]
/
hello [MSG]a 

bc[/MSG]

</textarea>

<button>convert</button>
<div></div>

1 Ответ

1 голос
/ 28 апреля 2020

Вы должны использовать регулярное выражение однострочного режима с добавленным переключателем s:

regex = /[MSG](.*?)[/MSG]/igs;

В регулярном выражении совпадения точек каждый символ кроме новой строки \ n. С помощью однострочного свитча все символы новой строки объединяются в одну строку.

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.8.0/jquery.min.js"></script>

hello [MSG]abc[/MSG]
<HR>
hello [MSG]a <BR>

bc[/MSG]
<HR>
<textarea id='textarea' rows=3>
hello [MSG]abc[/MSG]
/
hello [MSG]a 

bc[/MSG]

</textarea>

<button>convert</button>
<div></div>

<script>
$("button").on("click", function(){
   var textarea = $("#textarea").val();
   var regex = /\[MSG\](.*?)\[\/MSG]/igs;

   textarea = textarea.replace(regex, "converted: $1 --");

   $("div").text(textarea)

})
</script>

Эта статья может стать хорошим началом чтения https://www.regular-expressions.info/dot.html

$("button").on("click", function(){
   var textarea = $("#textarea").val();
   var regex = /\[MSG\](.*?)\[\/MSG]/igs;
   
   textarea = textarea.replace(regex, "converted: $1 --");
   
   $("div").text(textarea)

})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
hello [MSG]abc[/MSG]
<HR>
hello [MSG]a <BR>

bc[/MSG]
<HR>
<textarea id='textarea' rows=3>
hello [MSG]abc[/MSG]
/
hello [MSG]a 

bc[/MSG]

</textarea>

<button>convert</button>
<div></div>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...