Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.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 JS正则表达式返回-1&;0_Javascript_Regex - Fatal编程技术网

Javascript JS正则表达式返回-1&;0

Javascript JS正则表达式返回-1&;0,javascript,regex,Javascript,Regex,我的任务如下: let s = "avndexleops"; let keep_vowels = s.replace(/[^aeiouAEIOU\s]/g, ''); console.log(keep_vowels); let keep_consonants = s.replace(/[aeiouAEIOU\s]/g, ''); console.log(keep_consonants); 拿绳子 将每个元音按顺序打印在新行上,然后 在新行上打印每个辅音(按顺序) 我发现的问题是正则表达式。我原

我的任务如下:

let s = "avndexleops";
let keep_vowels = s.replace(/[^aeiouAEIOU\s]/g, '');
console.log(keep_vowels);
let keep_consonants = s.replace(/[aeiouAEIOU\s]/g, '');
console.log(keep_consonants);
  • 拿绳子

  • 将每个元音按顺序打印在新行上,然后

  • 在新行上打印每个辅音(按顺序)

  • 我发现的问题是正则表达式。我原来用

    /[aeiouAEIOU\s]/g
    您使用的:

    /[^aeiouAEIOU\s]/g
    
    而不是:

    /[aeiouAEIOU\s]/g
    

    ^
    表示“不”,因此您的正则表达式
    /[^aeiouAEIOU\s]/g
    计算所有辅音。

    有几个内置函数可用:

    let some_string='Mary有一只小羊羔';
    让元音=[…一些字符串.match(/[aeiouAEIOU\s]/g)];
    让辅音=[…某些字符串.match(/[^aeiouAEIOU\s]/g)];
    console.log(元音);
    
    console.log(辅音)我认为您没有正确理解正则表达式的工作原理。在方括号中,您只定义了一组要匹配的字符
    /[^aeiouAEIOU\s]/g
    ,并且进一步使用插入符号
    [^]
    ,作为组中的第一个,您表示希望它匹配除插入符号中的字符以外的所有字符。遗憾的是,您没有提供输入和预期输出的示例,因此我只是猜测,但我认为您可以执行以下操作:

    let s = "avndexleops";
    let keep_vowels = s.replace(/[^aeiouAEIOU\s]/g, '');
    console.log(keep_vowels);
    let keep_consonants = s.replace(/[aeiouAEIOU\s]/g, '');
    console.log(keep_consonants);
    
    请提供预期输入和输出的示例。

    如果(元音.test(s[i]){
    匹配则返回true或false,或者
    if(s[i]。搜索(元音)!=-1{
    if(s[i]。搜索(元音)==-1{

    如果您想修复代码,则是您想要的。
    -1不是错误的,因此您的if语句将无法正常运行。-1是搜索在未找到匹配项时返回的值。它必须这样做,因为
    search()
    返回匹配的索引位置,索引可以是0到无穷大,因此只有负数可用于指示不存在的索引:

    下面是一个正则表达式,它匹配元音、任何字母或其他字母,有效地将元音、辅音和其他内容分成3个捕获组。这样,您就不需要逐个字符进行测试并手动将它们分离出来。
    然后使用for-of循环迭代并将它们推送到各自的数组中

    const辅音=[],元音=[],其他=[];
    const str=“;蝙蝠猫设置老鼠。让我们切下mut,”;
    为马丘街(/([aeiouAEIOU])|([a-zA-Z])|(./g))的(const[、cons、vow等)
    cons和辅音。push(cons)| | | vow和元音。push(vow)| | typeof etc=='string'&&other.push(etc)
    console.log(
    辅音.join(“”)+'\n'+元音.join(“”)+'\n'+其他.join(“”)
    
    )
    对于预期输入/输出,我们可以说:“javascript”“aaijvscrpt”我提供的完整代码是有效的。但我的预期是“/[aeiouAEIOU\s]/g”如果是元音,则应返回1/true;如果是其他任何字符,则应返回0/false。但实际情况是,如果是辅音,则返回-1;如果是元音,则返回0://
    search()
    必须返回-1,因为search返回的索引可以是从0到无穷大的任何数字。您正在查找
    test()
    函数您想要
    .test
    函数,该函数返回true或false谢谢!这就是我弄错的地方。我以为search()会返回true或false。谢谢您的解释:)