如何从字符串中删除所有非字母并在javascript中将空格转换为短划线?

时间:2012-11-08 20:44:12

标签: javascript jquery regex string replace

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

如何让Foo's Bar在javascript中返回foos-bar

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

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

感谢。

3 个答案:

答案 0 :(得分:9)

Esailija是正确的 - 你的正则表达式是正确的,但第二个被解释为一个字符串,因为它用引号括起来。修复后,您的代码完美运行:

str.replace(/\s+/g, '-').replace(/[^a-zA-Z-]/g, '').toLowerCase();

答案 1 :(得分:0)

您可以尝试颠倒顺序,一般避免使用单词和空格字符

str.replace(/[^\w\s]+/g,'').replace(/\s+/g,"-").toLowerCase()

答案 2 :(得分:0)

您的代码中存在两个问题:

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

  3. str = str.replace(/\s+/g, '-').replace(/[^a-zA-Z-]/g, '').toLowerCase();