我有一个小代码片段,我在其中使用正则表达式从字符串中提取标点符号、数字等。我得到 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/