Javascript Pangram Regex

Von*_*tei 4 javascript regex pangram

我正在尝试编写一个REGEX来测试PANGRAM.我可以用传统的方式做到这一点,但似乎无法通过正则表达式来解决90%以上的测试.

输入:字符串

输出:true || 假

function isPangram(string){ 
   return ___________________.test(string) 
}
Run Code Online (Sandbox Code Playgroud)

到目前为止测试结果.

6/10 /([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, \s]+)/i

6/10 /[a-z]{1}/i

6/10 /[a-z]/i

6/10 /[a-z]+/i

9/10 /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 只是失败了abcdefghijklmopqrstuvwxyz

6/10 /[\w.]+/

非常感谢任何帮助或建议.

Tus*_*har 20

  1. 将字符串转换为小写
  2. 使用正则表达式从字符串中提取所有唯一的字母
  3. 检查唯一字母的数量是否为26

码:

function isPangram(string) {
    var regex = /([a-z])(?!.*\1)/g;
    return (string.match(regex) || []).length === 26;
}
Run Code Online (Sandbox Code Playgroud)

Regex101

var regex = /([a-z])(?!.*\1)/g;

function check() {
  var val = document.getElementById('text').value.toLowerCase();

  alert(val.match(regex).length == 26);
}
Run Code Online (Sandbox Code Playgroud)
<input type="text" id="text" />

<button onclick="check()">Check</button>
Run Code Online (Sandbox Code Playgroud)


zer*_*kms 10

这将是挑战的正确答案:

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) 
}
Run Code Online (Sandbox Code Playgroud)

它对每个字母使用前瞻来检查它们是否在传递的字符串中的某个位置。


Moh*_*sal 8

如果您正在寻找Non-RegExp解决方案

const isPangram = (string) => 
     new Set(string.toLowerCase().match(/[a-z]/g)).size === 26;

console.log(isPangram("abcdefghijklmnopqrstuvwxyz"));  //true
console.log(isPangram("The Quick Brown Fox Jumps over the lazy dog")); //true
Run Code Online (Sandbox Code Playgroud)