【发布时间】:2013-09-05 22:20:43
【问题描述】:
您好,我正在尝试创建一个正则表达式来识别输入的金钱和数字。我必须允许数字,因为我希望以编程方式输入非格式化数字,然后我将自己格式化它们。出于某种原因,我的正则表达式允许一个字母字符作为可能的输入。
[\$]?[0-9,]*\.[0-9][0-9]
我了解我的正则表达式接受添加多个逗号并且还需要小数点后两位数的情况。我已经知道如何解决这个问题了。我已将其范围缩小到可能是*\. 作为问题
编辑
我找到了有效的正则表达式 [\$]?([0-9,])*[\.][0-9]{2},但我仍然不知道它最初是如何或为什么失败的
我正在使用.formatCurrency() 将输入格式化为货币格式。可以找到here,但它仍然允许我使用字母字符,所以我必须使用$(this).inputmask('Regex', { regex: "[\$]?([0-9,])*[\.][0-9]{2}" }); 进一步屏蔽它,其中找到输入掩码here 和$(this) 是对文本类型输入元素的引用.我的代码看起来像这样
<input type="text" id="123" data-Money="true">
//in the script
.find("input").each(function () {
if ($(this).attr("data-Money") == "true") {
$(this).inputmask('Regex', { regex: "[\$]?([0-9,])*[\.][0-9]{2}" });
$(this).on("blur", function () {
$(this).formatCurrency();
});
我希望这会有所帮助。我尝试创建一个 JSfiddle 但我知道如何添加外部库/插件/扩展
【问题讨论】:
-
你错了,或者缺少上下文。
-
\.中的反斜杠可能会被您使用的任何软件“吃掉”。您需要提供环境、失败代码等的详细信息。 -
你用的是什么工具或语言,你说的是不可能的,除非你使用的工具有话要说:)
-
正则表达式不尊重用户的语言环境。例如,输入字符串 €4.655,00 在欧洲部分地区是有效的货币值 - 这就是为什么如果您的语言支持,最好使用语言环境支持。我们需要有关您的环境的更多详细信息;这是 Linux shell、python、...?
-
点和美元符号不会在您的正则表达式中转义。您应该将
regex: "[\$]?([0-9,])*[\.][0-9]{2}" }重写为regex: "[\\$]?([0-9,])*[\\.][0-9]{2}" }
标签: javascript jquery regex jquery-inputmask