2012-08-09 46 views
0

我要找的正則表達式只,也爲貨幣格式($ XXX.XX)正則表達式數字只,也掩蓋格式錢

我目前使用的數字和字母,它這個peice的代碼號工作得很好:

function validateForOnlyLettersAndNums(txt) 
{ txt.value = txt.value.replace(/[^a-zA-Z 0-9\n\r]+/g, ''); } 

然而,當我看着網頁周圍問什麼我在這裏,我只能找到這樣的東西:

(?<=\s|^)-?[0-9]+(?:\.[0-9]+)?(?=\s|$) 

,它似乎並沒有在工作,我在代碼中使用她E:

function validateForOnlyNums(txt) 
{ txt.value = txt.value.replace(?<=\s|^)-?[0-9]+(?:\.[0-9]+)?(?=\s|$, ''); } 
+1

那第二個正則表達式似乎**的方式**過於複雜。 '.replace(/ [^ 0-9 \ n \ r] +/g,'')'有什麼問題? – 2012-08-09 13:20:47

+0

@MattBall:你的代碼工作!謝謝!你碰巧有一個掩蓋價格? ($ XXX.XX)? – StealthRT 2012-08-09 13:25:27

+0

你似乎試圖做兩件不同的事情。爲什麼「驗證」功能會刪除字符? – 2012-08-09 13:42:13

回答

1

您還沒有包圍你的第二個正則表達式的斜槓,即:

function validateForOnlyNums(txt) 
{ txt.value = txt.value.replace(/?<=\s|^)-?[0-9]+(?:\.[0-9]+)?(?=\s|$/, ''); } 
+0

當使用你發佈的代碼時,我得到了錯誤** SyntaxError:無效的量詞**,它指向** /?的開始** <** – StealthRT 2012-08-09 13:23:18

+3

此外,它缺少一個'(''之前'?<= \ s | ^)'。另外,它在'(?= \ s | $')後面缺少一個''''而且JavaScript不支持反向後置'(?<= \ s | ^)'。 – Wiseguy 2012-08-09 13:23:21

0

嘗試:

function validateForOnlyNums(txt) 
{ 
    txt.value = txt.value.replace(/[^$0-9\.]/g, ''); 
} 

就應更換不像$ XXX.XX東西,其中x是一個空串的數字。這一個唯一的缺點是,它也會接受像12美元3.5美元7美元的輸入。

+0

這似乎不起作用。能夠在箱子裏輸入字符 – StealthRT 2012-08-09 13:35:50

+0

你是對的,我修改了我的帖子 – victorvartan 2012-08-09 13:54:13

+0

如果沒有任何美分,有沒有辦法取出** $ **和**。00 ** – StealthRT 2012-08-09 13:58:02