You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JS圆半径输入合法性校验:排除特殊字符、字母及混合值

解决半径输入的合法性验证问题

要实现你需要的输入验证,核心是确保输入为纯正数字(不能包含字母、特殊字符,也不允许数字与其他字符混合的格式),同时保留原有的<=0判断逻辑。以下是完整的实现代码及关键说明:

完整代码

let radius = prompt("write radius");
// 处理用户取消输入的情况
if (radius === null) {
  console.log("Incorrect data");
} else {
  // 正则匹配合法的正数字:支持整数、带小数的正数,排除纯0、混合字符的情况
  const validNumberRegex = /^[1-9]\d*(\.\d+)?$|^0\.\d+$/;
  // 移除输入前后空格后验证格式
  if (!validNumberRegex.test(radius.trim())) {
    console.log("Incorrect data");
  } else {
    const numRadius = Number(radius);
    // 确保半径数值大于0
    if (numRadius <= 0) {
      console.log("Incorrect data");
    } else {
      const area = Math.PI * Math.pow(numRadius, 2);
      console.log(`area = ${area.toFixed(2)}`); // 保留两位小数优化输出
    }
  }
}

关键逻辑说明

  • 正则验证格式:/^[1-9]\d*(\.\d+)?$|^0\.\d+$/ 会严格匹配:
    • 非0开头的整数(如5、123)或带小数的正数(如3.14、10.5)
    • 0开头的合法小数(如0.5、0.123),但排除纯0的情况
  • 处理边界情况:
    • 捕获用户点击取消输入的场景(此时radius为null)
    • 用.trim()移除输入前后的空格,避免用户误输入空格导致验证失败
  • 分步验证:先验证格式合法性,再转换为数字判断数值是否大于0,确保混合字符(如1a、$1)、非数字输入都会被拦截。

内容的提问来源于stack exchange,提问作者greenuser

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 02:50:51