我需要在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')