Javascript、string、RegEx、if和else if、console.log不同的输出
Javascript, string, RegEx, if and else if, console.log different output
我想按顺序输出字符串的元音,所以我决定使用RegEx来完成。
但是,当我把表达式放在(if和else-if)中的不同位置时,同一个表达式的输出是不同的。有人能解释一下吗?
function ordered_vowel_word(str) {
if(str.match(/[aeiou]{1,}/g) !== ""){
var arr = str.match(/[aeiou]{1,}/g);
console.log(arr);
}
else
console.log(str);
}
ordered_vowel_word("bcg");
ordered_vowel_word("eebbscao");
/*输出*/
ordered_vowel_word("bcg");
===>空
ordered_vowel_word("eebbscao");
===>["ee","ao"]
但如果我重组表达式,
function ordered_vowel_word(str) {
if(str.match(/[^aeiou]/) !== "")
console.log(str);
else if(str.match(/[aeiou]{1,}/g) !== ""){
var arr = str.match(/[aeiou]{1,}/g);
console.log(arr);
}
}
输出将是
ordered_vowel_word("bcg");
===>bgv
ordered_vowel_word("eebbscao");
===>eebbscao
请注意,如果至少有一个匹配,string.match
将返回数组,如果没有匹配,则返回null。
我想你想要的是:
if(str.match(/[aeiou]{1,}/g) == null){ // no matches
或
if(str.match(/[aeiou]{1,}/g) != null){ //has a match
至于排序,您必须用str.match
处理您得到的数组。
请查看此SO答案以对数组进行排序。可以,可以对字符使用>
和<
运算符。
str.match的返回值(使用它的方式)是一个数组,其中包含匹配时的匹配项。此外,当没有匹配项时,它不是空字符串。。。它实际上是空的。
尝试将你在if条件下测试的内容更改为:
str.match(/[aeiou]{1,}/g) !== null)
相关文章:
- 可以't让我的if语句处理js中的html表单输入
- 如果 a 为 false,则 if(a) === if(false)
- 如何在ReactJS JSX中执行嵌套的if-else语句
- 在JavaScript中输出转义字符
- 我已经创建了一个jquery转盘,并使用if条件来运行和停止转盘
- 正在尝试使用if和else添加类,但无法正常工作
- 在PHP中使用javascript更改页面标题'if'
- 如何在jQuery中将函数的输出分配给变量
- Javascript,输出结果后页面不断刷新
- gulp-if-javascript文件,但不在gulp-useref的特定目录中
- 如何在 API 调用后和 if 语句中启用提交按钮
- JavaScript IF.ELSE条件未输出预期值
- JavaScript - 为什么在使用语句之前声明的变量时与 if/else 语句的输出不同
- Javascript、string、RegEx、if和else if、console.log不同的输出
- Javascript if/else语句不返回任何输出
- 通过if else语句显示特定的输出
- 淡出使用if语句输入和输出
- if函数返回相同的输出
- 复杂的if语句运行代码而不考虑条件输出
- Javascript仅在if-else-if中输出默认值