2012-11-08 46 views
0

這個簡單的正則表達式困擾着我。你能幫忙嗎?如何從字符串中去除所有非字母,並在JavaScript中將空格轉換爲破折號?

我怎樣才能讓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,留下'

謝謝。

+4

應該是'/ [^ A-ZA-Z - ]/g',而不是''/ [^ A-ZA-Z - ]/g'' – Esailija

+0

衛生署!那很容易。謝謝。提交一個答案,它會爲你賺5點。 ;) – Ryan

+0

與[RegEx](http://www.w3schools.com/jsref/jsref_obj_regexp.asp) – SpYk3HH

回答

9

Esailija是現貨 - 你的正則表達式是正確的,但第二個被解釋爲一個字符串,因爲它用引號包裹。與固定的,你的代碼完美的作品:

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

你可以試着顛倒順序和一般避免單詞和空格字符

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

有在你的代碼的兩個問題:

  1. 不應引用正則表達式模式(第二個參數replace
  2. 返回值需要分配回str

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