javascript - Javascript 的正则表达式不正确

标签 javascript regex error-handling

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/使用示例语句测试我的正则表达式语句

上面的函数尝试检查字符串值是否为回文,如果是则返回 true,如果不是则返回 false

回文就像赛车,其向前和向后拼写相同

我的正则表达式是'[^a-z0-9]/gi',它选择所有标点符号、逗号和空格,以便使用replace删除它们 原型(prototype)字符串方法。在测试正则表达式时,它看起来很好,见下文

enter image description here

问题:

有人可以阐明我在这里做错了什么吗?我遇到的问题是我是 console.log(str) 并且它没有反射(reflect)正确的输出。例如

__eye 输入应产生 eye 输出,但事实并非如此

repl 在这里测试代码 https://repl.it/JVCf/21

编辑问题已解决:

它的 var re =/[^a-z0-9]/gi; 不是 var re = '/[^a-z0-9]/gi';

最佳答案

正则表达式模式不是字符串

来自the MDN documentation :

There are 2 ways to create a RegExp object: a literal notation and a constructor. To indicate strings, the parameters to the literal notation do not use quotation marks while the parameters to the constructor function do use quotation marks. So the following expressions create the same regular expression:

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

关于javascript - Javascript 的正则表达式不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45024008/

相关文章:

javascript - 使用System.import异步加载React组件

javascript - 如何将另一个函数中的数字调用到函数中?

javascript - 使用 While 循环时显示隐藏内容

java - 正则表达式 String.split( )

java - 在Java中将where子句解析为字符串

javascript - 无法在 react-google-maps 中呈现信息窗口

c# - 如何让 RegEx.Split 从字符串中提取一系列包含小数点的数字?

php - PHP查看密码是否匹配,如果匹配,则提交其数据

php - Zend 框架 : How to set _one_ default error handler for all modules?

spring-mvc - Thymeleaf错误消息优化