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

求判断字符串包含全部a-z字符的JavaScript语法方案

实现判断全字母句的函数

需求是写出一个isPangram函数,当输入字符串包含a到z所有英文字母时返回true,否则返回false。

先指出你现有写法里的几个问题:

  • 第一个函数:JS字符串没有contains方法,正确的是includes,但即使改成includes,也只是判断字符串里是否存在任意小写字母,无法验证所有字母都存在;而且正则表达式不能直接作为includes的参数,判断正则匹配应该用RegExp.test()方法。
  • 第二个函数:string.matchAll(/[a-z]/)后面少了闭合括号,语法错误;另外matchAll返回的是匹配结果的迭代器,只要有匹配就会被视为真值,但同样无法确认所有字母都存在。
  • 第三个函数:string[i] = /[a-z]/是赋值操作而非比较,应该用===或正则test;而且循环第一次就直接返回结果,逻辑错误,无法检查所有字母。

下面是几种正确的实现思路和语法:

方法1:利用Set去重验证

function isPangram(string) {
  // 提取所有字母并转小写,存入Set自动去重
  const uniqueLetters = new Set(string.toLowerCase().match(/[a-z]/g));
  // 若集合大小为26,说明包含所有a-z字母
  return uniqueLetters.size === 26;
}

方法2:遍历a-z逐一检查

function isPangram(string) {
  const lowerStr = string.toLowerCase();
  // 遍历a到z的ASCII码范围(97对应a,122对应z)
  for (let code = 97; code <= 122; code++) {
    const char = String.fromCharCode(code);
    // 只要有一个字母不存在就返回false
    if (!lowerStr.includes(char)) {
      return false;
    }
  }
  // 所有字母都存在则返回true
  return true;
}

方法3:正则正向预查验证

function isPangram(string) {
  // 用不区分大小写的正则,通过正向预查验证每个字母是否存在
  return /(?=.*a)(?=.*b)(?=.*c)(?=.*d)(?=.*e)(?=.*f)(?=.*g)(?=.*h)(?=.*i)(?=.*j)(?=.*k)(?=.*l)(?=.*m)(?=.*n)(?=.*o)(?=.*p)(?=.*q)(?=.*r)(?=.*s)(?=.*t)(?=.*u)(?=.*v)(?=.*w)(?=.*x)(?=.*y)(?=.*z)/i.test(string);
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 18:01:18