我做錯了或有JS替換的問題?javascript替換()函數奇怪的行爲與正則表達式
<input type="text" id="a" value="(55) 55-55-55" />
document.write($("#a").val().replace(/()-/g,''));
prints (55) 555555
我怎能取代()和空間呢?
我做錯了或有JS替換的問題?javascript替換()函數奇怪的行爲與正則表達式
<input type="text" id="a" value="(55) 55-55-55" />
document.write($("#a").val().replace(/()-/g,''));
prints (55) 555555
我怎能取代()和空間呢?
在JavaScript正則表達式時,(
和)
字符具有特殊的意義。如果你想直接列出它們,在它們前面加一個反斜槓(\
)。
如果你的目標是擺脫所有(
,)
,-
,和空格字符,你可以用一個字符類與\s
交替(例如,非此即彼)相結合,主張「做白小號步伐「:
document.write($("#a").val().replace(/[()\-]|\s/g,''));
(我沒有把反斜線在()
的前面,因爲你沒有一個字符類中需要我把一個在-
的前面,因爲內。字符類,-
有特殊含義。)
另外,如果你想擺脫任何這不是一個數字,你可以使用\D
:
document.write($("#a").val().replace(/\D/g,''));
\D
的意思是「不是一個數字」(注意,這是一個資本,小寫字母\d
與[任何數字]相反)。在MDN page on regular expressions
更多信息。
\ D很酷thx .. –
需要作爲第一個字符解決的模糊性,因爲破折號通常用於範圍(例如[a-zA-Z0-9]
)來使用字符類
/[-() ]/
使用"-"
。
document.write($("#a").val().replace(/[\s()-]/g,''));
這將移除所有的空格(\ S),括號和破折號
這是行之有效的 –
括號表示在正規表達式一個capturing group。您需要轉義它們(/\(\)-/
)以匹配序列「() - 」。但我想你想要使用character class,即匹配「(」,「)」或「 - 」的表達式;對於空格包括\s
shorthand:
value.replace(/[()-\s]/g, "");
你可能想讀一些documentation或tutorial。
使用此
.replace(/\(|\)|-| /g,'')
你必須逃脫括號(即的,而不是\(
(
)。在你的正則表達式中,你想列出四個項目:\(
,\)
,' - '和(空格),並且想要替換任何其中的任何一個,而不僅僅是它們四個的串中的一個,你必須使用OR它們之間有
|
。
要匹配集合中的任何字符,所以你應該使用方括號來使一個字符集:
document.write($("#a").val().replace(/[()\- ]/g,''));
通常情況下,括號在正則表達式special meaning,所以他們在被忽略了你正則表達式,只留下破折號。通常,爲了得到文字括號,你需要用\
(但是在方括號內,如上所述,你不需要)轉義它們。
上面的短劃線被轉義,因爲它通常指示字符集的範圍,例如[a-z]
。
可能是非常壞,但一個非常基本的方法將是,
document.write($("#a").val().replace(/(\()|(\))|-| |/g,''));
|
裝置OR
, \
用於逸出保留符號
'替換(/ [\(\)\ 040- ]/g,''));'用()和空格替換。 –