Я пытаюсь разобрать математику в строках. Он работает для x * y, но не x*y*z
. Я думаю, что это связано с одной строкой, а другая - числом. Но я не могу найти способ обойти это.Regex не соответствует номерам
Вот мой код:
var reMD = /(\d+) *[\*|\/] *(\d+)/g
var str = '17 * 13 * 4';
var ex;
runWhile();
function runWhile() {
var ex = reMD.exec(str);
if (ex !== null) {
if (ex.index === reMD.lastIndex) {
reMD.lastIndex++;
}
if (ex[0].indexOf('*') !== -1) {
var rep = parseInt(ex[1]) * parseInt(ex[2])
} else {
var rep = parseInt(ex[1])/parseInt(ex[2])
}
var rep = rep.toString()
str = str.replace(ex[0], rep)
if (reMD.exec(str) !== null) {
runWhile()
}
}
}
alert(str)
Оповещение посылает обратно 221 * 4
, но он должен вернуться в 884
. Как я могу это исправить?
Как бы это исправить, так что видит его как '221 * 4' второй раз' Exec() 'называется? – Hawkeye