我需要在javascript中完成特定任务,我的目标是匹配以特定字符集(例如元音)中的char开头的字符串,并以与字符串的长度大于三。
到目前为止,我已经完成了以下代码,该代码以相同字符开头和结尾,但不知道如何指定第一个字符来自特定字符集:
function regexVar() {
var re = /(.).*\1/
return re;
}
console.log("obcdo".test(s));
假设特定的字符集是元音
(a,e,i,o,u)
在这种情况下:
abcd ---->假
obcdo ---->是
ixyz ---->假
答案 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')