为啥我不能使用正则表达式来评估 if...else 语句 [重复]

Posted

技术标签:

【中文标题】为啥我不能使用正则表达式来评估 if...else 语句 [重复]【英文标题】: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 【参考方案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') );

【讨论】:

以上是关于为啥我不能使用正则表达式来评估 if...else 语句 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

是啥导致重新评估 if/else 表达式?

为啥这个正则表达式模式不能按预期工作?

Python:为啥 if-else 一行语句在 else 中不能与 continue 一起使用?

java之endwith()方法以及正则表达式匹配中文

VBA if...else语句

亚马逊短网址正则表达式...为啥我不能让它工作