[英]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';
從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.