2

所以我有一个函数可以很好地允许用户将自定义宽度定义为像素或百分比。

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

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

50%            25%
300px          150px

任何帮助,将不胜感激!

4

2 回答 2

3

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

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

%如果没有验证,如果输入没有以or px(can't do )结尾,则会引发错误null[0]。相反,如果您希望将丢失或无法识别的单位视为%默认值,您可以这样做:

parseInt(str) / 2 + (str.match(/(%|px)$/)||["%"])[0]
于 2013-03-01T18:49:19.097 回答
1

结合使用基于正则表达式String.replace的回调:

"50px".replace(/(\d+)(%|px)/, function (_, value, unit) { 
    return String(value / 2) + unit; 
});
// returns 25px
于 2013-03-01T18:49:30.487 回答