Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Замена аргумента в круглых скобках после функции (https://javascript.ru/forum/events/60611-zamena-argumenta-v-kruglykh-skobkakh-posle-funkcii.html)

Lol9999 10.01.2016 21:38

Замена аргумента в круглых скобках после функции
 
Как с помощью регулярных выражений заменить аргумент в круглых скобках после Math.sin,Math.cos, Math.sqrt?
Например превратить Math.sin(90) в Math.sin(что-то)
Даже не знаю как написать такое трудное регулярное выражение.

Keramet 10.01.2016 21:52

а обязательно регулярными выражениями?

Deff 10.01.2016 22:01

Lol9999,
Как то скучно...
Первый вопрос: А с какой целью ? Ибо может решить это всё не столь извращёнными методами.
Опишите задачу и попытку решения (код)

Keramet 10.01.2016 22:14

Deff,
+1 :)

Lol9999 11.01.2016 17:56

Цитата:

Сообщение от Deff (Сообщение 403207)
Lol9999,
Как то скучно...
Первый вопрос: А с какой целью ? Ибо может решить это всё не столь извращёнными методами.
Опишите задачу и попытку решения (код)

С целью "хакнуть" систему расчета траектории ракет Пентагона.

Заменить "градусы" в скобках на значение в радианах

alert( "Math.sin(90)".match(/\(\d.\)/g) ); // (90) - все к чему я додумался, а нужно искать скобки именно после "Math."

рони 11.01.2016 18:10

Lol9999,
var str = "Math.sin(90)";
alert( str = str.replace(/(Math.*?)(\d+)/g, function(a,b,c) {
   return b + c * Math.PI / 180
}) );
alert(eval(str).toFixed(2))

Lol9999 11.01.2016 19:24

Цитата:

Сообщение от рони (Сообщение 403298)
Lol9999,
var str = "Math.sin(90)";
alert( str = str.replace(/(Math.*?)(\d+)/g, function(a,b,c) {
   return b + c * Math.PI / 180
}) );
alert(eval(str).toFixed(2))

Спасибо!

Lol9999 12.01.2016 20:11

Цитата:

Сообщение от рони (Сообщение 403298)
Lol9999,
var str = "Math.sin(90)";
alert( str = str.replace(/(Math.*?)(\d+)/g, function(a,b,c) {
   return b + c * Math.PI / 180
}) );

А а для чего "a b c" в "function(a,b,c) "?

рони 12.01.2016 21:02

Lol9999,
a то что искали полностью - это часть строки Math.sin(90
b первые скобки Math.sin(
с вторые скобки 90
читать про replace


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