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。谢谢您的解释:)