我正在尝试编写一个 REGEX 来测试 PANGRAM。我可以用传统的方式来做,但似乎无法用正则表达式解决超过 90% 的测试。
输入:字符串
输出:真||假的
function isPangram(string){
return ___________________.test(string)
}
到目前为止的测试结果。
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.]+/
非常感谢任何帮助或建议。
最佳答案
- 将字符串转为小写
- 使用正则表达式从字符串中提取所有唯一的字母
- 检查唯一字母的数量是否为26
代码:
function isPangram(string) {
var regex = /([a-z])(?!.*\1)/g;
return (string.match(regex) || []).length === 26;
}
var regex = /([a-z])(?!.*\1)/g;
function check() {
var val = document.getElementById('text').value.toLowerCase();
alert(val.match(regex).length == 26);
}
<input type="text" id="text" />
<button onclick="check()">Check</button>
关于Javascript Pangram 正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32557299/