Home > Software engineering >  Want to write regex in javascript which will check if all the mentioned chars exist at least ones
Want to write regex in javascript which will check if all the mentioned chars exist at least ones

Time:04-01

I have string s and need to check if that string contains every single alphabet from a to z. What will the regex be to check this condition? where s can be very big string with multiple words separated with space.

ex:

pattern.test("zy aemnofgbc jkhil pqasdfrs tuvrhfwx") 

should return true as it contains all a-z alphabets at least ones.

pattern.test("sdfasbcd effsdgh ijsfghtkl mnhtop qrsjht uvwmnmx yfdhjkd") 

should return false as it doesn't have alphabet z.

Looking for optimum solution.

CodePudding user response:

the easiest way is by extracting unique chars

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")

CodePudding user response:

First solution with regex - removes all non-alphabetic characters, duplicates, and compares the string length with 26.

Second solution without regex, just checks is every alphabetic characters in string.

const test1 = (str) => str.replace(/[^a-z]|(.)(?=.*\1)/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}

CodePudding user response:

Is all 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;
}
  • Related