更改为RegExp

时间:2017-04-15 10:51:36

标签: javascript regex

如何使用RegExp更简单地编写此条件?

if (current === '+' || current === '-' || current === '*' || current === '/')

3 个答案:

答案 0 :(得分:6)

如果MemoryError始终是一个字符,

  • 正则表达式

    current
  • ES6,没有正则表达式

    if (/[+*/-]/.test(current))
    
  • 非ES6,没有正则表达式

    if ('+*/-'.contains(current))
    
  • 非ES6,没有正则表达式,简短

    if ('+*/-'.indexOf(current) !== -1)
    

如果没有,

  • 正则表达式

    if (~'+*/-'.indexOf(current))
    
  • ES6,没有正则表达式

    if (/^[+*/-]$/.test(current))
    
  • 非ES6,没有正则表达式

    if ([...'+*/-'].contains(current))
    

答案 1 :(得分:0)

   if(/[+*/-]/.test(current)){
      //do something
     } 

逃避这些字符,因为它们在正则表达式中具有特殊含义。

答案 2 :(得分:0)

您使用字符类和正则表达式的test函数:

if (/^[-+*/]$/.test(current)) {
    // ...
}

请注意^$断言(输入的开头和结尾),以便"-+"不匹配。

示例:

var rex = /^[-+*/]$/;
["p", "+", "-", "-+"].forEach(function(current) {
  console.log(current, rex.test(current));
});