正则表达式如何在函数中工作?

时间:2018-10-03 13:45:11

标签: javascript regex

我一直在研究一种算法,该算法采用字母顺序的字母序列,如果缺少一个字符,它将返回该字符。

例如:fearNotLetter("abcdfg")将返回"e"

我的问题是:

此解决方案背后的逻辑是什么?

为什么在这里以及如何使用正则表达式?

for循环中的条件如何工作?

function fearNotLetter(str) {
  var allChars = '';
  var notChars = new RegExp('[^'+str+']','g');

  for (var i = 0; allChars[allChars.length-1] !== str[str.length-1] ; i++)
    allChars += String.fromCharCode(str[0].charCodeAt(0) + i);

  return allChars.match(notChars) ? allChars.match(notChars).join('') : undefined;
}

1 个答案:

答案 0 :(得分:2)

function fearNotLetter(str) {
   var allChars = '';
   var notChars = new RegExp('[^'+str+']','g'); //1

   for (var i = 0; allChars[allChars.length-1] !== str[str.length-1] ; i++)//2
      allChars += String.fromCharCode(str[0].charCodeAt(0) + i); 

   return allChars.match(notChars) ? allChars.match(notChars).join('') : undefined; //3
}
  1. 正如变量名所言,它创建了str的取反,这意味着 像!abcdfg
  2. 循环,构建完整的正确字符串,直到最后一个 str字符,表示字母的完整字母,直到g => abcdefg
  3. 然后将其与match方法进行比较,将字符串与提供的文本进行字符串比较: 你可以思考的愚蠢方式

    abcdefg - abcdfg,然后您将得到e,如果缺少多个字符,它将与join方法连接。