First sanitize the value
var fnSanitize = str => !"1/s4".match( /[^-+*/\d+]/g )
Above function will check if the value has anything else apart from 0-9
and +-*\
. You can add more operators like ()
as well.
Now evaluate the expression
var evalExpression = str => fnSanitize( str ) ? eval( str ) : "";
Demo
var fnSanitize = str => !str.match(/[^-+*/\d+]/g)
var evalExpression = str => fnSanitize(str) ? console.log(eval(str)) : console.log("Bad expression");
document.querySelector("#check").addEventListener("click", function() {
evalExpression(document.querySelector("#inputText").value);
})
<form>
<input type='text' id='inputText' value='1/4'>
<button id="check">Check</button>
</form>
<script>
</script>
Or via Function
constructor
var evalExpression = str => fnSanitize( str ) ? new Function( "return " str ) : "";
Demo
var fnSanitize = str => !str.match(/[^-+*/\d+]/g)
var evalExpression = str => fnSanitize( str ) ? console.log(new Function( "return " + str )()) : console.log("Bad expression");
document.querySelector("#check").addEventListener("click", function() {
evalExpression(document.querySelector("#inputText").value);
});
<form>
<input type='text' id='inputText' value='1/4'>
<button id="check">Check</button>
</form>
<script>
</script>