0

这个简单的正则表达式让我很困扰。你能伸出援手吗?

我怎样才能在 javascriptFoo's Bar中返回?foos-bar

var str = "Foo's Bar";
str.replace(/\s+/g, '-').replace('/[^a-zA-Z-]/g', '').toLowerCase();
return str;

我能做的最好的就是foo's-bar,离开'

谢谢。

4

3 回答 3

9

Esailija 是正确的 - 您的正则表达式是正确的,但第二个正则表达式被解释为字符串,因为它被包裹在引号中。修复后,您的代码可以完美运行:

str.replace(/\s+/g, '-').replace(/[^a-zA-Z-]/g, '').toLowerCase();
于 2012-11-08T20:49:51.907 回答
0

您可以尝试颠倒顺序并通常避免使用单词和空格字符

str.replace(/[^\w\s]+/g,'').replace(/\s+/g,"-").toLowerCase()
于 2012-11-08T20:54:42.860 回答
0

您的代码中有两个问题:

  1. 不应引用正则表达式模式(第二个中的第一个参数replace
  2. 返回值需要分配回str

str = str.replace(/\s+/g, '-').replace(/[^a-zA-Z-]/g, '').toLowerCase();
于 2012-11-09T00:41:16.657 回答