2016-11-17 61 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

相关问题