如何使用Javascript/JQuery检查字符串的形式是否为10 * 10 * 10 * 10,然后进行数学运算

How do I check if a string is of the form 10*10*10 using Javascript/JQuery and then do math

本文关键字:然后 运算 是否 JQuery Javascript 何使用 检查 字符串      更新时间:2023-09-26

我正在尝试根据某些纸箱尺寸的输入动态计算体积。

例如,对于尺寸为10cm x 10cm x 10cm的纸箱,用户在文本输入中输入10 * 10 * 10。

然后,我的 javascript 将检查输入是否与此模式匹配,并进行数学运算并用结果填充另一个输入

。 10 x 10 x 10 = 1000。

我想我需要使用我没有太多经验的正则表达式。下面的代码在比赛阶段停止工作。(无效的正则表达式:/d+*d+*d+/:无需重复)虽然我很确定我不知道在那之后我在做什么。

谁能帮忙?

carton_dimensions=$(this).val();
var pattern = "('d+)'*('d+)'*('d+)";    
var result = carton_dimensions.match(pattern); 

if(result){
    volume=result[0]*result[1]*result[2];
}   
"('d+)'*('d+)'*('d+)"
^                   ^

是字符串文本。你需要的是一个正则表达式文字:

/('d+)'*('d+)'*('d+)/
^                   ^

或者,您可以使用 RegExp 构造函数,但随后您必须处理字符串文本中的特殊字符转义,以便该等效于您打算使用的正则表达式:

new RegExp("(''d+)''*(''d+)''*(''d+)")

首先,pattern被忧心忡忡地声明,它应该没有",但/

var pattern = /('d+)'*('d+)'*('d+)/; 

此外,您要查找的结果位于索引 1、2 和 3 中:

volume = result[1] * result[2] * result[3];

因此,您的最终代码必须如下所示:

carton_dimensions = $("input").val();
var pattern = /('d+)'*('d+)'*('d+)/;    
var result = carton_dimensions.match(pattern); 
if(result){
    volume = result[1] * result[2] * result[3];
}

这是一个带有工作示例的 JSFiddle。

对于计算,你可以像这样使用 javascript 的 eval:

var answer = eval(result[0] + '*' + result[1] + '*' + result[2]);

而且由于您正在验证输入,因此您应该是安全的。