Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

131
Views
Permitir problemas matemáticos en la entrada de cadenas (JavaScript)

¿Hay alguna manera de analizar ecuaciones matemáticas como entrada usando JavaScript?

por ejemplo, cuando un usuario ingresa "10-25" como entrada, se analiza a -15

Intenté usar eval , que funciona, pero permite a los usuarios ejecutar todo el código JavaScript, no solo las ecuaciones matemáticas.

Si es posible, también me gustaría permitir algunas funciones, como sin() , cos() degreesToRadians() , pero no todas las funciones.

ejemplos

 "5" //returns 5 "12-20" //returns -8 "3/2" //returns 1.5 "sin(3.14)" //returns 0.00159265292 "sin(degreesToRadians(180/2)) * 10" //returns 10 "alert('hi')" //doesn't work
about 4 years ago · Juan Pablo Isaza
2 answers
Answer question

0

Puede dividir la expresión por operaciones matemáticas y verificarlas.

El siguiente código lo hace por: ( ) / *

 mathExpression.replace(/([()/*])/g, " $1 ").split(" ").filter(v => v); 

 var allowedCommands = ["(", ")", /^\d*\.?\d*e?$/, "*", "/", "+", "-", "sin", "cos", "degreesToRadians"]; function checkCommand(arg) { return allowedCommands.some(v => { if (v instanceof RegExp) { return v.test(arg) } else { return v == arg; } }); } function checkAllowedCommands(mathExpression) { var commands = mathExpression.replace(/([()/*+-])/g, " $1 ").split(" ").filter(v => v); var filterNotAllowedCommands = commands.filter(v => !checkCommand(v)); return filterNotAllowedCommands.length == 0; } console.log(checkCommand("degreesToRadians")); console.log(checkCommand("234")); console.info("right expression"); console.info(checkAllowedCommands("sin(degreesToRadians(180/2)) * 10")); console.info(checkAllowedCommands("(1.2e-6)")) console.info(checkAllowedCommands("sin(1+2)")); console.warn("wong expression"); console.info(checkAllowedCommands("alert('hi')"));

about 4 years ago · Juan Pablo Isaza Report

0

Quizás algo como este paquete: https://www.npmjs.com/package/nerdamer

He usado Nerdamer en algunos proyectos en el pasado y es bastante sólido. Aparte de eso, no hay una forma "simple" de hacerlo sin implementar su propio mini-parser que yo sepa.

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!