2011-03-23 81 views
1

我正在尋找解析一些使用javascript的字段格式。我的規則是捕捉一些額外的東西,我需要修復。正則表達式是:Javascript正則表達式解析

/[\((\)\s)-]/g 

此正則表達式正確清理:(123) 456-7890我遇到的問題是,它也刪除所有空間,而不僅僅是空間下一個右括號。我不是正則表達式的專家,但我的理解是(\)\s)只會刪除右括號和空格組合。什麼是正確的正則表達式?它需要刪除所有括號和破折號。此外,只能在關閉括號後立即刪除空格。

我想要的結果就是這樣。

替換方法,我應該使用這樣

var str = mystring.replace(/[\((\)\s)-]/g, ''); 

(123) 456-7890工作應該成爲1234567890這是工作。

leave me alone應該留leave me alone的問題是,它正在成爲leavemealone

+3

您能準確地顯示您對給定輸入的期望輸出,而不僅僅是描述它嗎?這將使提供所需解決方案變得更加容易。 – 2011-03-23 15:06:23

回答

1

這將做的工作:

var str = mystring.replace(/\)\s*|\(\s*|-/g, ''); 

正則表達式的說明:

\)\s* : Open parenthesis followed by any number of whitespace 
|  : OR 
\(\s* : Close parenthesis followed by any number of whitespace 
|  : OR 
-  : Hyphen 

由於括號用於分組它們需要進行轉義,當你想從字面上與它們匹配的正則表達式,元字符。

+0

謝謝codaddict。使用'或'是有道理的。 – 2011-03-23 15:17:36

1

括號內放置的一切([])創建一個類的人物在輸入之間是否匹配。以你的要求的字面(「刪除所有括號,破折號和空格立即關閉後面的括號」):

"(123) 456-789 0".replace(/\)[\(\)\s-]+/g, ")") 

輸出:

"(123)456-789 0" 

這符合(基本上)相同的字符類,但指定這些字符緊隨右括號。

+0

我已經澄清了這個要求,它應該只在關閉圓括號後直接刪除空格。 – 2011-03-23 15:14:01

0

你可以使用lookbehind,以確保有一個paranthesis或東西的空間別的前面:

(?<=\))\s 

------------ OLD ANSWER ------- ---

如果你想刪除所有paranthesis,破折號和空格,你會去像這樣的東西:

/[\s-\(\)]+/g 

[某件事] - 將尋找任何在括號(字母小號, o,m,e,t,h,i,n,g)。

\ S =空白

(= paranthesis

)什麼是它前面(這將是paranthesis,空白和破折號= paranthesis

+ =至少一個或多個一次出現)

+0

感謝您的回答,我不想刪除所有空間,這是它目前正在做的。我問,它只能刪除關閉括號後的空格。 – 2011-03-23 15:11:29