想要在 javascript 中编写正则表达式,它将检查所有提到的字符是否至少存在一个
Want to write regex in javascript which will check if all the mentioned chars exist at least ones
我有字符串 s,需要检查该字符串是否包含从 a 到 z 的每个字母。正则表达式将是什么来检查这种情况?其中 s 可以是非常大的字符串,多个单词用 space.
分隔
例如:
pattern.test("zy aemnofgbc jkhil pqasdfrs tuvrhfwx")
应该 return 正确,因为它至少包含所有 a-z 字母表。
pattern.test("sdfasbcd effsdgh ijsfghtkl mnhtop qrsjht uvwmnmx yfdhjkd")
应该return false 因为它没有字母 z。
正在寻找最佳解决方案。
最简单的方法是提取唯一字符
function testAlphabet(str) {
var chars = str.replace(/[^a-z]/g).split(''); // it may need to convert to lowercase
// remove duplicate
chars = [...new Set(chars)];
console.log(chars.join('').length == 26)
}
testAlphabet("zy aemnofgbc jkhil pqasdfrs tuvrhfwx")
testAlphabet("sdfasbcd effsdgh ijsfghtkl mnhtop qrsjht uvwmnmx yfdhjkd")
使用正则表达式的第一个解决方案 - 删除所有 non-alphabetic 个字符,重复并将字符串长度与 26 进行比较。
没有正则表达式的第二种解决方案,只检查字符串中的每个字母字符。
const test1 = (str) => str.replace(/[^a-z]|(.)(?=.*)/gi, '').length === 26;
const test2 = (str) => [...`abcdefghijklmnopqrstuvwxyz`]
.every(ch => str.includes(ch));
console.log(test1('zy aemnofgbc jkhil pqasdfrs tuvrhfwx'));
console.log(test1('y aemnofgbc jkhil pqasdfrs tuvrhfwx'));
console.log(test2('zy aemnofgbc jkhil pqasdfrs tuvrhfwx'));
console.log(test2('y aemnofgbc jkhil pqasdfrs tuvrhfwx'));
.as-console-wrapper{min-height: 100%!important; top: 0}
都是a-z
function isAllaz() {
let s = "zy aemnofgbc jkhil pqasdfrs tuvrhfwx";
//console.log([...new Set(s.split("").filter(e => e.match(/[a-z]/)))].length==26);
return [...new Set(s.split("").filter(e => e.match(/[a-z]/)))].length==26;
}
我有字符串 s,需要检查该字符串是否包含从 a 到 z 的每个字母。正则表达式将是什么来检查这种情况?其中 s 可以是非常大的字符串,多个单词用 space.
分隔例如:
pattern.test("zy aemnofgbc jkhil pqasdfrs tuvrhfwx")
应该 return 正确,因为它至少包含所有 a-z 字母表。
pattern.test("sdfasbcd effsdgh ijsfghtkl mnhtop qrsjht uvwmnmx yfdhjkd")
应该return false 因为它没有字母 z。
正在寻找最佳解决方案。
最简单的方法是提取唯一字符
function testAlphabet(str) {
var chars = str.replace(/[^a-z]/g).split(''); // it may need to convert to lowercase
// remove duplicate
chars = [...new Set(chars)];
console.log(chars.join('').length == 26)
}
testAlphabet("zy aemnofgbc jkhil pqasdfrs tuvrhfwx")
testAlphabet("sdfasbcd effsdgh ijsfghtkl mnhtop qrsjht uvwmnmx yfdhjkd")
使用正则表达式的第一个解决方案 - 删除所有 non-alphabetic 个字符,重复并将字符串长度与 26 进行比较。
没有正则表达式的第二种解决方案,只检查字符串中的每个字母字符。
const test1 = (str) => str.replace(/[^a-z]|(.)(?=.*)/gi, '').length === 26;
const test2 = (str) => [...`abcdefghijklmnopqrstuvwxyz`]
.every(ch => str.includes(ch));
console.log(test1('zy aemnofgbc jkhil pqasdfrs tuvrhfwx'));
console.log(test1('y aemnofgbc jkhil pqasdfrs tuvrhfwx'));
console.log(test2('zy aemnofgbc jkhil pqasdfrs tuvrhfwx'));
console.log(test2('y aemnofgbc jkhil pqasdfrs tuvrhfwx'));
.as-console-wrapper{min-height: 100%!important; top: 0}
都是a-z
function isAllaz() {
let s = "zy aemnofgbc jkhil pqasdfrs tuvrhfwx";
//console.log([...new Set(s.split("").filter(e => e.match(/[a-z]/)))].length==26);
return [...new Set(s.split("").filter(e => e.match(/[a-z]/)))].length==26;
}