javascript - 正则表达式在 JavaScript 字符串中返回未定义

标签 javascript regex string undefined

我有一个小代码片段,我在其中使用正则表达式从字符串中提取标点符号、数字等。我得到 undefined 以及我撕开的字符串的输出。有人可以解释发生了什么吗?谢谢

var regex = /[^a-zA-z\s\.]|_/gi;

function ripPunct(str) {
  if ( str.match(regex) ) {
     
          str = str.replace(regex).replace(/\s+/g, "");
  }
  
  return str;
}

console.log(ripPunct("*@£#__-=-=_+_devide-00000110490and586@multiply.edu"));

最佳答案

您应该将替换模式传递给第一个 replace 方法,并在模式中使用 A-Z,而不是 A-z。此外,在替换之前检查匹配是没有意义的,只需直接使用 replace 即可。此外,似乎第二个链接的 replace 是多余的,因为第一个链接已经删除了空格(它包含 \s)。此外,|_ 替代方案也是多余的,因为 [^a-zA-Z\s.] 已经匹配下划线,因为它不是由指定的符号的一部分这个字符类。

var regex = /[^a-zA-Z\s.]/gi;

function ripPunct(str) {
  return str.replace(regex, "");
}

console.log(ripPunct("*@£#__-=-=_+_devide-00000110490and586@multiply.edu"));

关于javascript - 正则表达式在 JavaScript 字符串中返回未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41345832/

相关文章:

java - 如何引用另一个类中的字符串?

java - 使用字符串变量作为我想要播放的声音的名称,Java (Android)

Internet Explorer 中的 Javascript 代码错误

javascript - 使用正则表达式替换 url 之间的值

asp.net - Firefox 中的 Javascript 问题

java - 从字符串中提取模式

javascript - 过滤 ng-repeat 但保留初始长度/计数

regex - Tcl列表输出修改

python正则表达式多重查找

javascript - 正则表达式匹配变量赋值 ("a=12") 但忽略函数赋值 ("f(x)=x^2")