2012-02-06 56 views
0

我希望替換並非由-字母的所有符號,但我的代碼不起作用:的Javascript:更換REG EXP

$reg = '/[^a-zA-Z]+/g'; 
$txt = $txt.replace($reg, '-'); 

我在做什麼錯?

回答

3

您需要取消報價的正則表達式字符串,它是作爲一個正則表達式文本處理,所以你得到這樣的:

$reg = /[^a-zA-Z]+/g; 
$txt = $txt.replace($reg, '-'); 

在JavaScript正則表達式不需要被引用爲字符串,除非使用new Regexp()表示法;在上例中,它現在是一個正則表達式文字,它不被視爲字符串,而是作爲.replace()中使用的一條正則表達式。

1

刪除您的正則表達式附近的引號。

如果要與一個連字符,然後你的正則表達式將工作代替你的意圖已經連續多個非字母字符。如果你想用多個連字符代替多個非alpha字符,那麼你也應該刪除+符號。

4

JavaScript中的正則表達式不是字符串。

reg = /[^a-z]+/gi; 
txt = txt.replace(reg, '-'); 

你不需要在他們周圍加引號。

+1

我投票+1使用'/ i'而不是'[A-ZA-Z]'和+17有關變量去除'$'。 – 2012-02-06 20:41:22

+0

可能會很高興在那裏有一些'var',不過:p – Phrogz 2012-02-06 21:12:48

+0

@Progrog從OP的問題推斷變量已經被聲明(因爲他在他的例子中沒有使用var)。雖然是的,但在代碼/函數/任何情況下都會很好。 – 2012-02-07 12:33:08

2

不要在正則表達式中使用引號。沒有引號,它們是RegEx對象。用引號,它們只是字符串。

使用,

$reg = /[^a-zA-Z]+/g;