如何使用正则表达式匹配多个字符串?

How to match multiple strings using regular expression?

我有一堆字符串可以匹配 Bonfire: Palindrome in FreeCodeCamp 字符串是:

我的代码:

function palindrome(str) {


  var newstr = str.replace(/[^\w_-]/g,"").toLowerCase();
  var num = newstr.length;
  for(var i=0;i<=Math.floor(num/2);i++)  
    {
      if(newstr[i]!==newstr[num-i])
        {

          return newstr;

       }
    }

  return true;
}

if 语句中可能有什么错误?字符串的 return 没问题。只是无法理解这些正则表达式?

我当前的正则表达式:

var newstr = str.replace(/[^\w_-]/g,"").toLowerCase();

匹配除最后一个以外的几乎所有字符串。我哪里错了?

最后一个不是回文;开头有 0_0,结尾有 0-0,不要删除这些字符。

作为迂腐的注释,严格来说,这不是一种常规语言。

数组或字符串中的索引 运行 从 0length-1。但是当您访问字符串末尾的元素时,您将从 num 而不是 num-1。从末尾减去的时候需要额外减去一个1。所以应该是:

if (newstr[i] != newstr[num-i-1]) {
    return newstr;
}

因此,虽然答案很有用,但它们没有提供正确的正则表达式。向@Barmar 指出正确的方向。这是我的正则表达式。

var newstr = str.replace(/[\W_]/g,'').toLowerCase();

回文在 FCC 中的完整代码:

function palindrome(str) {


  var newstr = str.replace(/[\W_]/g,'').toLowerCase();
  var num = newstr.length;
  for(var i=0;i<=Math.floor(num/2);i++)  
    {
      if(newstr[i]!==newstr[num-1-i])
        {

          return false;

       }
    }

  return true;
}



palindrome("0_0 (: /-\ :) 0-0");