Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Регулярное выражение, поиск значения и его увеличение (https://javascript.ru/forum/misc/63731-regulyarnoe-vyrazhenie-poisk-znacheniya-i-ego-uvelichenie.html)

фонарик 26.06.2016 05:30

Регулярное выражение, поиск значения и его увеличение
 
Доброго времени суток, помогите разобраться. Есть текст, нужно найти в нем все цифровые значения и увеличить их, например, на 55.

<textarea id="text" style="display:block;width:400px; height:50px" name="" cols="" rows="">
f 1/1/1 2/2/2 3/3/3
f 3/3/3 4/4/4 1/1/1
f 5/5/5 6/6/6 7/7/7
f 7/7/7 8/8/8 5/5/5
f 9/9/9 10/10/10 11/11/11
f 11/11/11 12/12/12 9/9/9
f 13/13/13 14/14/14 15/15/15
f 15/15/15 16/16/16 13/13/13
f 17/17/17 18/18/18 19/19/19
f 19/19/19 20/20/20 17/17/17
f 21/21/21 22/22/22 23/23/23
f 23/23/23 24/24/24 21/21/21
f 2101/2101/2101 2133/2133/2133 2134/2134/2134
f 2134/2134/2134 2102/2102/2102 2101/2101/2101
f 2135/2135/2135 2109/2109/2109 2108/2108/2108
f 2108/2108/2108 2136/2136/2136 2135/2135/2135
f 2137/2137/2137 2116/2116/2116 2115/2115/2115
f 2115/2115/2115 2138/2138/2138 2137/2137/2137
f 2122/2122/2122 2139/2139/2139 2140/2140/2140
f 2140/2140/2140 2123/2123/2123 2122/2122/2122
</textarea>
<input type="button" value="RegExp" onclick="RegExp_01()">

<script>
function RegExp_01(){
	var raw_data = document.getElementById('text').value; //читаем текст из поля
	var reg_exp = / /img;//регулярка
	var new_data = raw_data.replace(reg_exp, " ");
	alert(new_data);

}

</script>

laimas 26.06.2016 06:16

А чем являются эти числа?

фонарик 26.06.2016 07:44

Цитата:

Сообщение от laimas (Сообщение 420494)
А чем являются эти числа?

Индекс фейса 3d модели obj формата. А вообще, это просто текст :-?

laimas 26.06.2016 08:23

Ну если исходное было объектом, то лучше изменения производить в объекте. А строковые значение, например так

<textarea id="txt" rows="22" cols="50">f 1/1/1 2/2/2 3/3/3
f 3/3/3 4/4/4 1/1/1
f 5/5/5 6/6/6 7/7/7
f 7/7/7 8/8/8 5/5/5
f 9/9/9 10/10/10 11/11/11
f 11/11/11 12/12/12 9/9/9
f 13/13/13 14/14/14 15/15/15
f 15/15/15 16/16/16 13/13/13
f 17/17/17 18/18/18 19/19/19
f 19/19/19 20/20/20 17/17/17
f 21/21/21 22/22/22 23/23/23
f 23/23/23 24/24/24 21/21/21
f 2101/2101/2101 2133/2133/2133 2134/2134/2134
f 2134/2134/2134 2102/2102/2102 2101/2101/2101
f 2135/2135/2135 2109/2109/2109 2108/2108/2108
f 2108/2108/2108 2136/2136/2136 2135/2135/2135
f 2137/2137/2137 2116/2116/2116 2115/2115/2115
f 2115/2115/2115 2138/2138/2138 2137/2137/2137
f 2122/2122/2122 2139/2139/2139 2140/2140/2140
f 2140/2140/2140 2123/2123/2123 2122/2122/2122</textarea>

<script> 
var t = document.getElementById('txt');

t.value = t.value.replace(/(\d+(?=\/|\s|\r\n|$))/g, function(n) {
    return +n + 55
})
</script>

фонарик 26.06.2016 08:26

:dance:

<textarea id="text" style="display:block;width:400px; height:50px" name="" cols="" rows="">
f 1/1/1 2/2/2 3/3/3
f 3/3/3 4/4/4 1/1/1
f 5/5/5 6/6/6 7/7/7
f 7/7/7 8/8/8 5/5/5
f 9/9/9 10/10/10 11/11/11
f 11/11/11 12/12/12 9/9/9
f 13/13/13 14/14/14 15/15/15
f 15/15/15 16/16/16 13/13/13
f 17/17/17 18/18/18 19/19/19
f 19/19/19 20/20/20 17/17/17
f 21/21/21 22/22/22 23/23/23
f 23/23/23 24/24/24 21/21/21
f 2101/2101/2101 2133/2133/2133 2134/2134/2134
f 2134/2134/2134 2102/2102/2102 2101/2101/2101
f 2135/2135/2135 2109/2109/2109 2108/2108/2108
f 2108/2108/2108 2136/2136/2136 2135/2135/2135
f 2137/2137/2137 2116/2116/2116 2115/2115/2115
f 2115/2115/2115 2138/2138/2138 2137/2137/2137
f 2122/2122/2122 2139/2139/2139 2140/2140/2140
f 2140/2140/2140 2123/2123/2123 2122/2122/2122
</textarea>
<input type="button" value="RegExp" onclick="RegExp_01()">

<script>
function RegExp_01(){
	var raw_data = document.getElementById('text').value; //читаем текст из поля
	var re = new RegExp('([0-9]+)', 'img');
	var obj_face_numbers = raw_data.replace(re, function(e){return Number(e)+55});
	alert(obj_face_numbers);

}

</script>


laimas,
спасибо вам за помощь :)

Rise 26.06.2016 08:32

laimas, оптимизировал немного /\d+/g

laimas 26.06.2016 08:34

Цитата:

Сообщение от Rise
оптимизировал немного

Да конечно, если это формат файла, то скорее других толкований и быть в нем не может.

laimas 26.06.2016 08:37

фонарик,
у цифр нет верхнего или нижнего регистра, то есть модификатор i не требуется, как и m в данном случае.


Часовой пояс GMT +3, время: 15:19.