2012-02-13 91 views
1

我有一個字符串。我需要解析它,替換任何字符(除號(09),,.正則表達式替換任何字符(數字/,除外)

如何我可以用JavaScript做

與嘗試:?

string.replace(/[a-zA-Z]*/, ""); 

,但似乎它不工作。此外,我需要任何字符,不僅僅是aZ(還有?,/,空白等等,如上所述,期望如所述,,

+0

創建一個否定的字符類:http://www.regular-expressions.info/charclass.html。不要忘記'g'全局修飾符。 – 2012-02-13 14:04:26

回答

6

使用negated character class

[^0-9,.] 

,放在你不想被替換任何字符,它會匹配所有的人。

看到它here on Regexr

您可以通過添加一個量詞+優化它,使得它在一次,而不是每次每個替換這些字符的序列。

string.replace(/[^0-9,.]+/g, ""); 

飾演Felix克林指出,其重要的使用全局選項g,以匹配模式的所有地方。

看到它here on Regexr

+0

不要忘記'g'lobal修飾符。 – 2012-02-13 14:08:36

+0

@FelixKling謝謝,在Regexr上使用它,在這裏忘了它,修正 – stema 2012-02-13 14:09:38

1

嘗試更換所有字符,除了數字和.,,做全球替換:

string.replace(/[^0-9\,\.]+/g, ""); 
6
string.replace(/[^\d,.]+/g, ""); 

應該做的。

  1. [^\d.,]表示「除數字,逗號或句點之外的任何字符」,否定character class
  2. 使用+而不是*或者您將會有很多空字符替換爲空字符串。
  3. 使用/g因此所有實例都被替換。
0

嘗試這個 下面的代碼是防止字母鍵

onKeypress="return Custom(event,'[0-9]');" 

function Custom(e, cPattern) { 
    var key = [e.keyCode || e.which]; 
    var pattern = new String(cPattern); 
    var keychar = String.fromCharCode([e.keyCode || e.which]); 
    var pattern1 = new RegExp(pattern); 

    if ((key == null) || (key == 0) || (key == 8) || 
         (key == 9) || (key == 13) || (key == 27)) { 
     return true; 
    } 
    else if (pattern1.test(keychar)) { 
     return true; 
    } 
    else { 
     e.preventDefault ? e.preventDefault() : e.returnValue = false; 
    } 
}