正则表达式 (.NET) 以多种格式验证任何实数
Regex (.NET) to validate any real number in several formats
我正在尝试使用 .NET 中的一个正则表达式规则验证不同格式的任何实数。我指的格式如下:
点(千)和逗号(十进制)
123 ; 1.234.567 ; 12.345.678 ; 123.456.789 ; 1.234.567,89 ; 1.234,56789 ; 1,2 ; 0,123
逗号(千位)和点(十进制)
1,234,567 ; 12,345,678 ; 123,456,789 ; 1,234,567.89 ; 1,234.56789 ; 1.2 ; 0.123
白色space(千位)加点或逗号(十进制)
1 234 567 ; 12 345 678 ; 123 456 789 ; 1 234 567,89 ; 1 234 567.89 ; 1 234,56789 ; 1 234.56789
我对正则表达式的基础知识了解得更多一些,所以我做了这个。到目前为止没有成功。
(^|\s)(-|\+|±|\+/-)?(?:(([1-9]{1,3})([,]\d{3})*|[0]?)([\.]\d+)?)|(?:(([1-9]{1,3})([\.]\d{3})*|[0]?)([,]\d+)?)|(?:(([1-9]{1,3})([\s]\d{3})*|[0]?)([\.|,]\d+)?)(\s|$)
任何人都可以帮助我或 link 我找到解决方案吗?
嗯,这可能不是最佳的正则表达式:
^\d*$|^(?:\d{1,3}(?:\.\d{3})*(?:,\d{1,5})?)$|^(?:\d{1,3}(?:,\d{3})*(?:\.\d{1,5})?)$|^(?:\d{1,3}(?: \d{3})*(?:[,.]\d{1,5})?)$
但它确实起作用了。我会看看如何在不久的将来做出更好的。这是一个 Live Demo
如果你的输入不是 that 脏(即:一旦你有一个 space 作为千位分隔符你就不会得到点然后逗号,不像 1 032,354.12
) 你可以使用这个简单的版本:
^\d{1,3}(?:[., ]\d{3})*(?:[.,]\d{1,5})?$
这意味着:
\d{1,3}
<= 以1到3位数字开头;
(?:[., ]\d{3})*
<=重复0到n次后3位千位分隔符;
(?:[.,]\d{1,5})?
<= 小数点后有 1 到 5 位数字,0 次或 1 次。
我正在尝试使用 .NET 中的一个正则表达式规则验证不同格式的任何实数。我指的格式如下:
点(千)和逗号(十进制)
123 ; 1.234.567 ; 12.345.678 ; 123.456.789 ; 1.234.567,89 ; 1.234,56789 ; 1,2 ; 0,123
逗号(千位)和点(十进制)
1,234,567 ; 12,345,678 ; 123,456,789 ; 1,234,567.89 ; 1,234.56789 ; 1.2 ; 0.123
白色space(千位)加点或逗号(十进制)
1 234 567 ; 12 345 678 ; 123 456 789 ; 1 234 567,89 ; 1 234 567.89 ; 1 234,56789 ; 1 234.56789
我对正则表达式的基础知识了解得更多一些,所以我做了这个。到目前为止没有成功。
(^|\s)(-|\+|±|\+/-)?(?:(([1-9]{1,3})([,]\d{3})*|[0]?)([\.]\d+)?)|(?:(([1-9]{1,3})([\.]\d{3})*|[0]?)([,]\d+)?)|(?:(([1-9]{1,3})([\s]\d{3})*|[0]?)([\.|,]\d+)?)(\s|$)
任何人都可以帮助我或 link 我找到解决方案吗?
嗯,这可能不是最佳的正则表达式:
^\d*$|^(?:\d{1,3}(?:\.\d{3})*(?:,\d{1,5})?)$|^(?:\d{1,3}(?:,\d{3})*(?:\.\d{1,5})?)$|^(?:\d{1,3}(?: \d{3})*(?:[,.]\d{1,5})?)$
但它确实起作用了。我会看看如何在不久的将来做出更好的。这是一个 Live Demo
如果你的输入不是 that 脏(即:一旦你有一个 space 作为千位分隔符你就不会得到点然后逗号,不像 1 032,354.12
) 你可以使用这个简单的版本:
^\d{1,3}(?:[., ]\d{3})*(?:[.,]\d{1,5})?$
这意味着:
\d{1,3}
<= 以1到3位数字开头;(?:[., ]\d{3})*
<=重复0到n次后3位千位分隔符;(?:[.,]\d{1,5})?
<= 小数点后有 1 到 5 位数字,0 次或 1 次。