簡體   English   中英

Javascript的正則表達式不正確

[英]Incorrect regex expression for Javascript

function palindrome(str) {
  //Clean up string
  var re = '/[^a-z0-9]/gi';
  str=str.toLowerCase();
  str=str.replace(re, '');
  console.log(str);

  //Reverse string and check
  var pstr = str.split('').reverse().join('');
  if (pstr === str){
    return true; 
  }
  return false;
}

palindrome("__Eye");

我正在嘗試測試回文陳述。 我正在使用https://regex101.com/使用示例語句測試我的regEx語句

上面的函數是嘗試檢查字符串值是否是回文,如果是則返回true,否則返回false

回文就像race car一樣,其前后拼寫相同

我的正則表達式為'[^a-z0-9]/gi' ,它選擇所有標點符號,逗號和空格,以便使用replace原型字符串方法刪除它們。 在測試正則表達式時,看起來不錯,請參見下文

在此處輸入圖片說明

問題:

有人可以闡明我在這里做錯了什么嗎? 我的問題是我是console.log(str) ,它沒有反映正確的輸出。 例如

__eye輸入應該導致eye輸出,但不是

在此處repl以測試代碼https://repl.it/JVCf/21

解決的編輯問題

var re = /[^a-z0-9]/gi; NOT var re = '/[^a-z0-9]/gi';

RegEx模式不是字符串

MDN文檔中

有兩種創建RegExp對象的方法:文字符號和構造函數。 為了指示字符串,文字符號的參數不使用引號,而構造函數的參數則使用引號。 因此,以下表達式創建相同的正則表達式:

/ab+c/i;
new RegExp('ab+c', 'i');
new RegExp(/ab+c/, 'i');

不同的方法各有優缺點。

 function palindrome(str) { //Clean up string var re = /[^a-z0-9]/g; // note RegEx pattern is not a string str=str.toLowerCase(); str=str.replace(re, ''); console.log(str); //Reverse string and check var pstr = str.split('').reverse().join(''); if (pstr === str){ return true; } return false; } palindrome("__Eye"); 

暫無
暫無

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

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