Javascript使用正则表达式匹配一个字符串,该字符串以字符集中的特定字符开头,以相同的字符结尾
我需要在javascript中实现一项特定任务,其中我的目标是匹配字符串,该字符串以特定字符集(如元音中的一个字符开始,并以字符串长度大于3的相同字符结束 到目前为止,我已经完成了以下以相同字符开头和结尾的代码,但不知道如何指定第一个字符来自特定的字符集:Javascript使用正则表达式匹配一个字符串,该字符串以字符集中的特定字符开头,以相同的字符结尾,javascript,regex,Javascript,Regex,我需要在javascript中实现一项特定任务,其中我的目标是匹配字符串,该字符串以特定字符集(如元音中的一个字符开始,并以字符串长度大于3的相同字符结束 到目前为止,我已经完成了以下以相同字符开头和结尾的代码,但不知道如何指定第一个字符来自特定的字符集: function regexVar() { var re = /(.).*\1/ return re; } console.log("obcdo".test(s)); 假设特定的字符集是元音 (a、e
function regexVar() {
var re = /(.).*\1/
return re;
}
console.log("obcdo".test(s));
假设特定的字符集是元音
(a、e、i、o、u)
在这种情况下:
abcd-->false
obcdo-->正确
ixyz-->false
您需要使用字符集来确保捕获的字符是您想要的字符之一,在模式末尾反向引用第一个捕获的组,而不是第三个组(您的模式没有3个捕获组),使用
^
和$
将模式锚定到字符串的开头和结尾,然后重复{2,}
而不是*
,以确保整个字符串至少有4个字符长:
/^([aeiou]).+\1$/
const re=/^([aeiou])。{2,}\1$/
console.log(
重新测试(“abcd”),
重新测试(“obcdo”),
重新测试(“ixyz”)
);
您可以使用此模式
/^([aeiou]).+\1$/i
-字符串的开头^
-匹配([aeiou])
其中任何一个。(第1组)a,e,i,o,u
-匹配除新行以外的任何内容+
-匹配组1\1
-字符串结尾$
let startAndEnd=(str)=>{
返回/^([aeiou]).+\1$/i.test(str)
}
console.log(startAndEnd(`ixyz`))
console.log(startAndEnd(`abcd`)
console.log(startAndEnd(`obcdo`))
如果我们使用元音集,则以相同元音开头和结尾的单词的正则表达式为:
var re = /(\ba(\w+)a\b|\be(\w+)e\b|\bi(\w+)i\b|\bo(\w+)o\b|\bu(\w+)u\b)/g;
您能解释一下我在这个RegExp中的用途吗?@AliAzim
i
标志用于区分大小写。因此,如果您使用i
标志,regex将把大写
和小写
字母视为同一个字符。否则,它将把它们视为两个不同的字符