01.07.2017, 22:08
|
Интересующийся
|
|
Регистрация: 01.07.2017
Сообщений: 10
|
|
Класс RegExp
<head>
<meta charset="utf-8">
</head>
<body>
<input type="text">
<div>Далеко-далеко за словесными горами в стране, гласных и согласных живут рыбные тексты. Свой подзаголовок, эта напоивший текста по всей до одна несколько обеспечивает свой все, рукописи мир то продолжил скатился дал алфавит всеми.</div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script>
$('input').keyup(function(){
var inp = new RegExp($(this).val(), 'g');
var str = $('div').text().replace(inp, '<span style="color:red">'+inp+'</span>');
$('div').html(str);
});
</script>
</body>
Как поправить? чтоб спец символы не вылазили. Пожалуйста
|
|
01.07.2017, 22:19
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,072
|
|
LinaInverse,
<head>
<meta charset="utf-8">
</head>
<body>
<input type="text">
<div>Далеко-далеко за словесными горами в стране, гласных и согласных живут рыбные тексты. Свой подзаголовок, эта напоивший текста по всей до одна несколько обеспечивает свой все, рукописи мир то продолжил скатился дал алфавит всеми.</div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script>
function escapeRegExp(string){
return string.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
}
var str = $('div').text();
$('input').on('input', function(){
var v = this.value;
var inp = new RegExp(escapeRegExp(v), 'g');
var text = str.replace(inp, '<span style="color:red">'+v+'</span>');
$('div').html(text);
});
</script>
</body>
Последний раз редактировалось рони, 01.07.2017 в 22:26.
|
|
01.07.2017, 22:21
|
Профессор
|
|
Регистрация: 07.11.2013
Сообщений: 4,662
|
|
Сообщение от LinaInverse
|
не вылазили
|
Куда?
|
|
01.07.2017, 22:23
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,072
|
|
Rise,
они найденное RegExp перезаписывают на RegExp
|
|
01.07.2017, 22:27
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,072
|
|
LinaInverse,
исправил немного код, скопируйте заново пост№2
|
|
01.07.2017, 22:37
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,072
|
|
LinaInverse,
this.value лучше не трогать ...
var text = str.replace(inp, '<span style="color:red">'+this.value+'</span>');
или смотрите код выше
|
|
01.07.2017, 22:40
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,072
|
|
LinaInverse,
окончательный вариант ...
var str = $('div').text();
$('input').on('input', function(){
var v = this.value.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
var inp = new RegExp(v, 'g');
var text = str.replace(inp, '<span style="color:red">$&</span>');
$('div').html(text);
});
|
|
01.07.2017, 22:44
|
Профессор
|
|
Регистрация: 07.11.2013
Сообщений: 4,662
|
|
рони,
не осилил
LinaInverse,
там все просто
|
|
01.07.2017, 22:51
|
|
Профессор
|
|
Регистрация: 07.03.2011
Сообщений: 1,127
|
|
Сообщение от LinaInverse
|
Рони, а вы не в курсе нет ли где конструктора для создания регулярного выражения "Для чайников".
|
https://regex101.com/
|
|
01.07.2017, 22:54
|
Интересующийся
|
|
Регистрация: 01.07.2017
Сообщений: 10
|
|
спасибо, жалко что все на инглише.
|
|
|
|