Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/429.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript使用正则表达式匹配一个字符串,该字符串以字符集中的特定字符开头,以相同的字符结尾_Javascript_Regex - Fatal编程技术网

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

Javascript使用正则表达式匹配一个字符串,该字符串以字符集中的特定字符开头,以相同的字符结尾,javascript,regex,Javascript,Regex,我需要在javascript中实现一项特定任务,其中我的目标是匹配字符串,该字符串以特定字符集(如元音中的一个字符开始,并以字符串长度大于3的相同字符结束 到目前为止,我已经完成了以下以相同字符开头和结尾的代码,但不知道如何指定第一个字符来自特定的字符集: function regexVar() { var re = /(.).*\1/ return re; } console.log("obcdo".test(s)); 假设特定的字符集是元音 (a、e

我需要在javascript中实现一项特定任务,其中我的目标是匹配字符串,该字符串以特定字符集(如元音中的一个字符开始,并以字符串长度大于3的相同字符结束

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

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])
    -匹配
    a,e,i,o,u
    其中任何一个。(第1组)
  • +
    -匹配除新行以外的任何内容
  • \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将把
大写
小写
字母视为同一个字符。否则,它将把它们视为两个不同的字符