【发布时间】:2023-03-03 02:39:01
【问题描述】:
我需要使用正则表达式来验证输入中的以下数量格式 $10.00 0r ($10.00) ... 金额应为 R2 格式,带有带或不带括号的 $ 符号。如果是其他格式,则验证必须失败。请就此提出建议。
【问题讨论】:
-
这个“R2”格式是什么?对小数位数有限制吗?
-
金额只保留两位小数
标签: regex xsd-validation
我需要使用正则表达式来验证输入中的以下数量格式 $10.00 0r ($10.00) ... 金额应为 R2 格式,带有带或不带括号的 $ 符号。如果是其他格式,则验证必须失败。请就此提出建议。
【问题讨论】:
标签: regex xsd-validation
更新:
根据下面的 cmets 和关于 R2 格式的问题中的评论,修改后的正则表达式将是:
((\($\d+\.\d{2}\))|($\d+\.\d{2}))
较早的答案:
试试这个正则表达式:
\$\s*\(?\d+(\.\d+)?\)?
\$ - 匹配美元符号\s* - 匹配美元符号和数字或大括号之间的任何空格\(? - 匹配可选的左大括号\d+ -匹配数字的整数部分(\.\d+)? - 匹配可选的小数部分和点\)? - 匹配可选的右大括号
所以你可以试试这个 xsd 验证器:
<xs:simpleType name="CurrencyFormat">
<xs:restriction base="xs:string">
<xs:pattern value="\$\s*\(?\d+(\.\d+)?\)?" />
</xs:restriction>
</xs:simpleType>
【讨论】:
$10.00) 和 ($10.00
试试这个:
^(\(\$\d+\.\d{2}\)|\$\d+\.\d{2})$
【讨论】:
^(\(\$\d+\.\d{2}\)|\$\d+\.\d{2})$,而是\($\d+\.\d{2}\)|$\d+\.\d{2}\)。