Javascript 告诉字符串是像素还是百分比,然后除以2

Javascript 告诉字符串是像素还是百分比,然后除以2,javascript,jquery,Javascript,Jquery,因此,我有一个函数,允许用户定义一个自定义宽度作为像素或百分比 问题是我需要得到他们提供的数字的一半。下面是我正在尝试做的一个例子: 用户输入------预期结果 50% 25% 300px 150px 任何帮助都将不胜感激 这是可行的,尽管您可能应该首先验证他们的输入 parseInt(str) / 2 + str.match(/(%|px)$/)[0] 没有验证,如果输入不是以%结尾或px不能执行null[0],则会引发错误。如果您希望在默认情况下

因此,我有一个函数,允许用户定义一个自定义宽度作为像素或百分比

问题是我需要得到他们提供的数字的一半。下面是我正在尝试做的一个例子:

用户输入------预期结果

50%            25%
300px          150px

任何帮助都将不胜感激

这是可行的,尽管您可能应该首先验证他们的输入

parseInt(str) / 2 + str.match(/(%|px)$/)[0]
没有验证,如果输入不是以%结尾或px不能执行null[0],则会引发错误。如果您希望在默认情况下将丢失或无法识别的单位视为%,则可以执行以下操作:

parseInt(str) / 2 + (str.match(/(%|px)$/)||["%"])[0]

这是可行的,尽管您可能应该首先验证他们的输入

parseInt(str) / 2 + str.match(/(%|px)$/)[0]
没有验证,如果输入不是以%结尾或px不能执行null[0],则会引发错误。如果您希望在默认情况下将丢失或无法识别的单位视为%,则可以执行以下操作:

parseInt(str) / 2 + (str.match(/(%|px)$/)||["%"])[0]
将基于正则表达式的String.replace与回调结合使用:

"50px".replace(/(\d+)(%|px)/, function (_, value, unit) { 
    return String(value / 2) + unit; 
});
// returns 25px
将基于正则表达式的String.replace与回调结合使用:

"50px".replace(/(\d+)(%|px)/, function (_, value, unit) { 
    return String(value / 2) + unit; 
});
// returns 25px

一个更简单的web表单可以让用户单独选择%或px,比如说,使用一对单选按钮,而不是将其输入到与数字相同的文本字段中。否则,这听起来像是一个工作。这是一个插件,用户可以填写的参数之一是宽度。抱歉,本应包括此项。如果str.indexOf“%”!=-1 var halfPct=parseIntstr,10/2+'%';一个更简单的web表单可以让用户单独选择%或px,比如说,使用一对单选按钮,而不是将其输入到与数字相同的文本字段中。否则,这听起来像是一个工作。这是一个插件,用户可以填写的参数之一是宽度。抱歉,本应包括此项。如果str.indexOf“%”!=-1 var halfPct=parseIntstr,10/2+'%';