簡體   English   中英

如何使用正則表達式匹配多個字符串?

[英]How to match multiple strings using regular expression?

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

  • 眼睛
  • 賽車
  • 不是回文
  • 一個人,一個計划,一條運河。 巴拿馬
  • 幾乎
  • 我的年齡是0,0 si ym ym。
  • 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");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM