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

时间:2019-03-23 09:52:53

标签: javascript regex

我需要在javascript中完成特定任务,我的目标是匹配以特定字符集(例如元音)中的char开头的字符串,并以与字符串的长度大于三。

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

function regexVar() {

    var re = /(.).*\1/
    return re;
}

console.log("obcdo".test(s));

假设特定的字符集是元音

  

(a,e,i,o,u)

在这种情况下:

  

abcd ---->假

     

obcdo ---->是

     

ixyz ---->假

4 个答案:

答案 0 :(得分:3)

您需要使用字符集来确保捕获的字符是您想要的字符之一,在模式末尾而不是第三组后向引用第一个捕获组,您的模式不会没有3个捕获组),使用^$将模式锚定到字符串的开头和结尾,然后重复{2,}而不是*进行制作确保整个字符串至少包含4个字符:

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

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

答案 1 :(得分:0)

您可以使用此模式

/^([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`))
 

答案 2 :(得分:0)

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

var re = /(\ba(\w+)a\b|\be(\w+)e\b|\bi(\w+)i\b|\bo(\w+)o\b|\bu(\w+)u\b)/g;

答案 3 :(得分:0)

function regCheck(string){

    let re = new RegExp(/^(a|e|i|o|u).*\1$/g);
    return re.test(string);

}
regCheck('aewxyzae')