【问题标题】:Why can't I use Regex to evaluate if...else statement [duplicate]为什么我不能使用正则表达式来评估 if...else 语句 [重复]
【发布时间】:2021-02-20 23:45:29
【问题描述】:

我正在尝试使用正则表达式来评估索引 0 处的 newArray 是否等于存储在 vowel 中的值。我知道这种方法不起作用,但我不明白为什么。 顺便说一句,我刚刚开始学习如何编码,所以我只知道 Vanilla JS

function translate(val) {
    let newArray = Array.from(val)
    let vowel = /^[aeiouy]/gi
    let consonant = /[^aeiouy]/
    if (newArray[0] == vowel) {
        return 'vowel';
    } else if (newArray[0] == consonant) {
        return 'consonant'
    } {
        return 'none';
    }
}
 translate('inglewood')

【问题讨论】:

  • Array.from(var) 应该是 Array.from(val) 吗?
  • 是的!刚刚修复了@ThumChoonTat
  • newArray[0] == consonant 这不是正则表达式的使用方式...使用 String .match 或 RegExp .test

标签: javascript regex


【解决方案1】:

您应该在这里使用正则表达式test 方法:

function translate(val) {
    let vowel = /^[aeiouy]/gi;
    let consonant = /^[^aeiouy]/;
    if (vowel.test(val)) {
        return 'vowel';
    } else if (consonant.test(val)) {
        return 'consonant'
    } else {
        return 'none';
    }
}

console.log(translate('inglewood'));

注意:我认为在这里使用Array.from() 没有任何意义。相反,我们可以直接针对输入字符串运行test

【讨论】:

  • 谢谢!这实际上将使我的代码更容易接下来的步骤!
【解决方案2】:

你需要用正则表达式.test()字符串

function translate(val) {
    let newArray = Array.from(val)
    let vowel = /^[aeiouy]/gi
    let consonant = /[^aeiouy]/

    if ( vowel.test( newArray[0] ) ) {
        return 'vowel';
    } else if ( consonant.test( newArray[0] ) ) {
        return 'consonant'
    } {
        return 'none';
    }
}
console.log( translate('inglewood') );

【讨论】:

    猜你喜欢
    • 2018-09-17
    • 1970-01-01
    • 2015-06-26
    • 1970-01-01
    • 1970-01-01
    • 2021-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多