在正则表达式和 for 循环中使用“g”修饰符

问题描述 投票:0回答:0

问题:如果一个字符串超过 3 个字符,只返回前 3 个小写字符。如果字符串少于 3 个字符,则返回大写字母的字符串。

我知道这个问题可以用几种方式来解释(a)将前 3 个字符转换为小写,但返回整个句子,(b)识别最初以小写形式书写的前 3 个字符并返回它们。我的解决方案基于选项 (b),但在我的正则表达式中使用“g”修饰符时确实出现了一个问题。如果我在 regExp 变量中写入 /[a-z]/g,那么结果会改变。在下面的示例中,它将返回“iei”而不是“ife”。我不知道为什么。想知道是否有人知道。

function newString(sentence){
  let regExp = /[a-z]/;
  let newStr = [];
  if(sentence.length > 3) {
    for(let i = 0; i < sentence.length; i++){ 
      if(regExp.test(sentence[i]) && newStr.length < 3){
        newStr.push(sentence[i]);  
      }    
    }
    return newStr.join(""); 
  } else {
    return sentence.toUpperCase();
  }
}
console.log(newString("Life is a gift"));

javascript regex
© www.soinside.com 2019 - 2024. All rights reserved.