2016-11-17 60 views
1

我有一個輸入字段,應該只接受在貨幣語法中使用的字符(美元符號,數字,逗號和小數)。我怎樣才能寫我的REGEX來檢查一個字符串是否包含至少一個不是上面列出的字符的字符?如何使用REGEX找到一個角色的一個實例?

我試過以下,但這個表達式的問題是,如果一個有效的字符出現在字符串中,它會拋出'else'語句。 (unitPriceVal是用戶輸入的字符串)

我想寫來檢查,如果整個字符串包含有效匯率的正則表達式,如果真正的運行else語句

validCurrency = /([0-9\$.,])/; 

if (!unitPriceVal.match(validCurrency) || unitPriceVal == "") { 
         unitPrice.setValueState("Error"); 
        } else { 
         unitPrice.setValueState("None"); 
        } 
       }, 
+0

我可能會誤解,但'validCurrency = /([0-9 \ $。,] +)/;'爲你工作? – elethan

+0

是的,它在一個字符匹配表達式時運行else塊,我想寫一個正則表達式來檢查整個表達式是否包含有效貨幣 –

回答

2

我想寫一個檢查一個正則表達式,如果整個字符串包含有效的貨幣

的要檢查整個字符串,錨比賽開始和輸入端,使用^$,並確保有什麼之間是允許的字符序列(+):

/^[\d$.,]+$/; 

你不需要括號。您也不需要轉義字符集內的$。最後,您可以使用\d作爲數字。

通常,最好使用input元素的pattern屬性來執行此檢查。在這種情況下,你不需要錨點(他們暗含):

<input pattern="[\d$.,]+"> 
+0

偉大的解決方案。我只希望我可以使用輸入模式,不幸的是我在SAP UI5/xml視圖中編寫,控件非常有限。它(正則表達式)雖然工作! –

1

我怎麼能寫我的REGEX來檢查一個字符串是否至少包含一個不符合上述字符的 字符?

function validUnitPrice(unitPriceVal) { 
    let invalidCurrency = /[^0-9\$.,]/; 
    return unitPriceVal.search(invalidCurrency) == -1; 
} 

^字符作爲字符集([^...])內的第一個字符否定的字符集合中的設置,即匹配字符不。

+0

儘管否定註釋是正確的,但這並不能真正解決問題。 Torazaburo的回答是正確的方法。 – wordsmith

相關問題