2012-06-05 56 views

回答

5

在JavaScript正則表達式時,()字符具有特殊的意義。如果你想直接列出它們,在它們前面加一個反斜槓(\)。

如果你的目標是擺脫所有()-,和空格字符,你可以用一個字符類與\s交替(例如,非此即彼)相結合,主張「做白小號步伐「:

document.write($("#a").val().replace(/[()\-]|\s/g,''));​ 

(我沒有把反斜線在()的前面,因爲你沒有一個字符類中需要我把一個在-的前面,因爲內。字符類,-有特殊含義。)

另外,如果你想擺脫任何這不是一個數字,你可以使用\D

document.write($("#a").val().replace(/\D/g,''));​ 

\D的意思是「不是一個數字」(注意,這是一個資本,小寫字母\d與[任何數字]相反)。在MDN page on regular expressions

更多信息。

+0

\ D很酷thx .. –

3

需要作爲第一個字符解決的模糊性,因爲破折號通常用於範圍(例如[a-zA-Z0-9])來使用字符類

/[-() ]/ 

使用"-"

0
document.write($("#a").val().replace(/[\s()-]/g,''));​ 

這將移除所有的空格(\ S),括號和破折號

+0

這是行之有效的 –

0

使用此

.replace(/\(|\)|-| /g,'') 

你必須逃脫括號(即的,而不是\(()。在你的正則表達式中,你想列出四個項目:\(,\),' - '和(空格),並且想要替換任何其中的任何一個,而不僅僅是它們四個的串中的一個,你必須使用OR它們之間有|

0

要匹配集合中的任何字符,所以你應該使用方括號來使一個字符集:

document.write($("#a").val().replace(/[()\- ]/g,'')); 

通常情況下,括號在正則表達式special meaning,所以他們在被忽略了你正則表達式,只留下破折號。通常,爲了得到文字括號,你需要用\(但是在方括號內,如上所述,你不需要)轉義它們。

上面的短劃線被轉義,因爲它通常指示字符集的範圍,例如[a-z]

0

可能是非常壞,但一個非常基本的方法將是,

document.write($("#a").val().replace(/(\()|(\))|-| |/g,''));​​ 

|裝置OR\用於逸出保留符號

相關問題