Javascript 使用正则表达式匹配一个字符串,该字符串以字符集中的特定字符开头,并以相同的字符结尾



我需要在javascript中完成一个特定的任务,其中我的目标是匹配字符串,该字符串以一组特定字符(如元音(中的字符开头,并以字符串长度大于3的相同字符结尾。

到目前为止,我已经完成了以下代码,该代码以相同的字符开头和结尾,但不知道如何指定第一个字符来自特定的字符集:

function regexVar() {
    var re = /(.).*1/
    return re;
}
console.log("obcdo".test(s));

假设特定的字符集是元音

(a, e, i, o, u(

在这种情况下:

ABCD ----> 假

奥布多---->真的

伊克西兹---->假

你需要使用字符集来确保捕获的字符是你想要的字符之一,反向引用模式末尾的第一个捕获组,而不是第三个组(你的模式没有 3 个捕获组(,使用 ^$ 将模式锚定到字符串的开头和结尾, 并重复{2,}而不是*,以确保整个字符串长度至少为 4 个字符:

/^([aeiou]).+1$/

const re = /^([aeiou]).{2,}1$/
console.log(
  re.test('abcd'),
  re.test('obcdo'),
  re.test('ixyz')
);

您可以使用此模式

/^([aeiou]).+1$/i
  • ^ - 字符串的开头
  • ([aeiou]) - 匹配a,e,i,o,u其中任何一个。(第1组(
  • .+ - 匹配除换行符以外的任何内容。
  • 1 - 比赛组 1
  • $ - 字符串结尾

let startAndEnd = (str) =>{
  return /^([aeiou]).+1$/i.test(str)
}
console.log(startAndEnd(`ixyz`))
console.log(startAndEnd(`abcd`))
console.log(startAndEnd(`obcdo`))
 

如果我们取元音集,那么以相同元音开头和结尾的单词的正则表达式为:

var re = /(ba(w+)ab|be(w+)eb|bi(w+)ib|bo(w+)ob|bu(w+)ub)/g;
function regCheck(string){
    let re = new RegExp(/^(a|e|i|o|u).*1$/g);
    return re.test(string);
}
regCheck('aewxyzae')

最新更新