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

JavaScript用户输入验证:如何将州全称与缩写视为等效值

解决方法:让全称与缩写等效,忽略大小写匹配

首先,你原来用单个字符串存储有效选项的方式不太好维护,也没法处理大小写和等效匹配的问题。我们可以通过标准化输入+分组/集合存储的方式来解决这个问题,具体步骤如下:

1. 重构有效选项的存储方式

推荐把同一地区的全称、缩写(以及其他可能的别名)放在一起,或者直接整理成一个包含所有有效小写形式的集合,这样后续检查更方便。

方式一:用集合存储所有有效小写形式(推荐,查找高效)

把所有有效字符串转成小写,存入Set结构,这样查找速度非常快:

// 包含所有有效选项的小写形式:全称+缩写
const VALID_STATE_SET = new Set([
  'queensland', 'qld',
  'new south wales', 'nsw',
  'victoria', 'vic',
  'northern territory', 'nt',
  'western australia', 'wa',
  'south australia', 'sa',
  'tasmania', 'tas',
  'australian capital territory', 'act'
]);

方式二:用分组数组存储(便于维护别名)

如果以后需要给某个地区加更多别名,这种方式更直观:

const VALID_STATE_GROUPS = [
  ['queensland', 'qld'],       // 昆士兰州
  ['new south wales', 'nsw'],  // 新南威尔士州
  ['victoria', 'vic'],         // 维多利亚州
  ['northern territory', 'nt'],// 北领地
  ['western australia', 'wa'], // 西澳大利亚州
  ['south australia', 'sa'],   // 南澳大利亚州
  ['tasmania', 'tas'],         // 塔斯马尼亚州
  ['australian capital territory', 'act'] // 首都领地
];

2. 标准化用户输入

不管用户输入的是大写(QUEENSLAND)、首字母大写(Queensland)还是缩写(QLD),我们都把它转成小写+去除前后空格,统一格式后再检查:

function normalizeInput(input) {
  // 处理空输入、前后空格,转小写
  return input ? input.trim().toLowerCase() : '';
}

3. 编写验证函数

根据你选择的存储方式,编写对应的验证逻辑:

对应集合方式的验证函数

function isValidState(input) {
  const normalized = normalizeInput(input);
  return VALID_STATE_SET.has(normalized);
}

对应分组数组的验证函数

function isValidState(input) {
  const normalized = normalizeInput(input);
  // 检查输入是否存在于任意一个分组中
  return VALID_STATE_GROUPS.some(group => group.includes(normalized));
}

4. 使用示例:循环验证用户输入

let userInput;
do {
  userInput = prompt("请输入澳大利亚的州/领地名称或缩写(比如Queensland或QLD):");
  if (!isValidState(userInput)) {
    alert("输入无效!请输入有效的州/领地名称或缩写,比如Queensland、QLD等。");
  }
} while (!isValidState(userInput));

console.log("输入有效,继续执行后续代码...");

这样处理后,用户输入QUEENSLAND、qld、Queensland都会被判定为有效,完美解决你遇到的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 07:04:56