如何创建一个正则表达式来检查用户输入是否匹配货币语法中正式找到的字符? (数字,句点/小数位,逗号或美元符号?)。
以下可以找到上面列出的所有字符,除了美元符号,还有任何想法如何正确构造它?
/([0-9.,])/g
答案 0 :(得分:2)
我用于货币验证的正则表达式如下:
^(\$)?([1-9]{1}[0-9]{0,2})(\,\d{3})*(\.\d{2})?$|^(\$)?([1-9]{1}[0-9]{0,2})(\d{3})*(\.\d{2})?$|^(0)?(\.\d{2})?$|^(\$0)?(\.\d{2})?$|^$
RegExr是一个很棒的网站,用于测试和查看这些字符串(也许你可以创建一个不像野兽的正则表达式字符串!)
答案 1 :(得分:0)
你只是想测试角色吗?在那种情况下
[0-9,.$]+
就足够了。或者您是否正在使用逗号和所有内容的正确位置测试格式$1,123,123.12
?
在这种情况下,你需要更像
的东西(\$?\d{1,3}(?:,\d{3})*(?:.\d{2})?)
应该这样做。
答案 2 :(得分:0)
您需要定义您希望正则表达式匹配的内容,比“匹配货币语法中正式找到的字符”更正式。我们不知道您感兴趣的货币。我们不知道您需要多严格的货币。
也许你会想出类似的东西:
这些元素必须按此顺序排列:
- 货币符号('£','€'或'$')(您的要求可能会指定更多货币)
- 一个或多个数字
- 句号或逗号
- 正好两位数字
一旦你有这样的规范,很容易转换为正则表达式:
[£€$] // one of these chars.
\d+ // '+' means 'one or more'
[.,] // '[]' means 'any one of these'.
\d\d // Two digits. Could also be written as '\d{2}'
或者连在一起:
[£€$]\d+[.,]\d\d
如果您已经了解了如$
和.
这样的特殊字符,那么您可能会惊讶地发现它不会在此处完成。在[]
内,他们失去了特殊的意义。
(有正则表达式的方言 - 请查看您正在使用的任何实现的文档)
但您的要求可能会有所不同。我给出的例子不匹配:
$ 12.00
$12
USD12
¥200.00
25¢
$0.00005
20 μBTC
44 dollars
£1/19/11¾d
(“一磅,九先令十一,十三便士”)制定您的要求,然后编写代码以满足要求。
答案 3 :(得分:-1)
\($|GBP)?[0-9]*((\.|,)[0-9]+(\,[0-9]+)?)?
这有点复杂,但这可行。
答案 4 :(得分:-1)
你应该在特殊字符之前设置\,你也应该设置星号(0+)或加号(1+)来匹配完整货币字符,例如:
let position = window.GetPosition();
let x = position[0];
let y = position[1];
或以实际价格200,00,其中所有时间都以逗号后的2个符号存在:
/([0-9\.,]*)/g