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

How to match multiple strings using regular expression?

本文关键字:字符串 何使用 正则表达式      更新时间:2023-09-26

我有一堆字符串要匹配FreeCodeCamp中的Bonfire:回文字符串为:

  • 眼睛
  • 赛车
  • 不是回文
  • 一个人,一个计划,一条运河。巴拿马
  • 没有
  • almostomla
  • 我的年龄是0,0岁
  • 1只眼睛代表1只眼睛
  • 0_0(:/-'':)0-0

我的代码:

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语句中可能有什么错误?字符串返回正常。。就是无法理解这些正则表达式?

我当前的正则表达式:

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");