【发布时间】:2018-07-12 18:02:37
【问题描述】:
我需要一些帮助。
我必须为 angularjs ng-pattern 属性构建一个正则表达式。
正则表达式必须验证文本,而不是每一行或某些部分。文本必须包含一些精确到小数点后 2 位的金额,并且每个金额都应在新行中输入。此外,每个金额之前和之后都接受空格。
如果一行包含 2 个数量,则整个文本无效。
例如,此文本是有效的,因为每个金额都在新行中输入:
123.34
12345.56
2.54
此示例无效,因为一行包含 2 个金额:
12.43
123.32 2345.54
124.43
此示例无效,因为一个金额不包含 2 个小数(每个金额必须恰好包含 2 个小数):
123
123.43
123.65
我最好的尝试是^(([0-9]+[.][0-9]{2})\s*)+$,它可以测试here。但我的正则表达式还不够,因为它在同一行中接受多个金额的文本。
谢谢
【问题讨论】:
-
行上可以有前导/尾随空格吗?尝试
^\d+\.\d{2}(?:\r?\n\d+\.\d{2})*$,如果没有,请参阅regex101.com/r/E5l3SB/1 演示。 -
是的,接受前导/尾随空格。
-
谢谢 WiktorStribiżew,它是完美的。
-
我发布了解释正则表达式的答案,并解释了如何调整它以及它如何与
ng-trim交互。
标签: javascript angularjs regex validation