繁体   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