【发布时间】:2021-03-16 21:07:42
【问题描述】:
我绝不是Regex 的大师,这就是我在这里的原因我目前有这个:
\s?[^0-9]?\s?[0-9,]+([\\.]{1})?[0-9]+\s?
Link 到 regex101
为了解释我的验证尝试,我试图验证一个字符串是否匹配正确的格式结构。
我只想匹配字符串,例如:
- 1.00 英镑
- 10.00 英镑
- 100.00 英镑
- 1000.00 英镑
- 10,000.00 英镑
- 100,000.00 英镑
- £1,234,546.00
验证规则:
- 字符串必须以“£”开头。
- 字符串应始终在小数点后保留 2 位数字。
- “£”后面只能接受 0-9 之间的数字
- 如果字符串长度大于 6(在 £1000.00 之后),则需要在适当的位置输入逗号(即 £10,000.00 - £100,000.00 - £1,000,000.00 - £10,000,000.00 等)
例如,不应接受的字符串:
- 1 英镑
- 10.000 英镑
- 1,00.00 英镑
- 1,000.00 英镑
- 10,000.00
- 100,000,00 英镑
- 1.234.546 英镑
真的希望你们中的一个了不起的人可以帮助我,如果您需要更多信息,请告诉我!
【问题讨论】:
-
这些特定的验证规则是否有原因?看来您可以使用
decimal.TryParse(string. System.Globalization.NumberStyles, IFormatProvider, out decimal)而不是正则表达式。如果您这样做,您说应该失败的大多数示例都会成功,但我不确定为什么会出现问题。例如,为什么£1会失败?那不应该只是£1.00吗?£10.000不应该只是£10.00吗? -
验证规则与工作相关,如果测试数据显示
£1字符串作为基金值,则表明格式存在问题,这需要反映在自动化测试。
标签: c# regex validation currency-formatting