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

JavaScript实现Check same case函数提交测试失败求助

问题分析与解决

你的代码问题出在正则表达式[A-z]的范围错误上。

ASCII编码里,大写字母Z的编码是90,小写字母a的编码是97,这两者之间还包含了^、_、]等非字母字符。所以当输入^或]时,a.match(/[A-z]/g)会返回匹配结果,导致你的第一个判断条件!a.match(/[A-z]/g)不成立,不会返回-1,而是进入后续分支,最终返回0,不符合需求。

修正方案很简单,把判断字母的正则从[A-z]改成[A-Za-z],这个范围才是严格的大小写字母区间:

function sameCase(a, b) {
  if (!a.match(/[A-Za-z]/g) || !b.match(/[A-Za-z]/g)) {
    return -1
  } else if ((a.match(/[A-Z]/g) && b.match(/[A-Z]/g)) || (a.match(/[a-z]/g) && b.match(/[a-z]/g))) {
    return 1
  } else {
    return 0
  }
}

另外,也可以用更简洁的方式判断字符是否为字母,比如利用字符串的toUpperCase()/toLowerCase()方法对比原字符,或者使用Unicode字符类\p{L}(需要加u标志,比如/^\p{L}$/u),不过[A-Za-z]在这个场景下已经足够可靠。

修正后测试sameCase("^","B")和sameCase("]","D")都会正确返回-1,符合题目要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 20:30:56