有人能为我提供以下模式的正则表达式吗?
$ 1234
$ 31234.3
$ 1234.56
$ 123456.78
$ 99
我的要求是小数点前的数字不应超过6,小数点后的数字不应超过2位数。请帮我。提前谢谢..
答案 0 :(得分:9)
^\$(?=.*\d)\d{0,6}(\.\d{1,2})?$
(?=.*\d)
确保字符串中至少有一位数字。如果没有这个,正则表达式^\$\d{0,6}(\.\d{1,2})?$
将匹配字符串$
。
(?=.)
也可以,因为正则表达式确保后续字符确实有效。因此,它可以简化为
^\$(?=.)\d{0,6}(\.\d{1,2})?$
答案 1 :(得分:4)
^\$[0-9]{0,6}(\.[0-9]{1,2})?$
答案 2 :(得分:2)
模式是:
^\$\d{0,6}(\.\d{0,2})?$
这不会验证是否有任何数字,所以“$”。根据提问者的原始要求,这是一个有效的匹配和有效的结果。
解释:
^
表示只匹配我正在寻找的字符串之前没有任何内容,即“USD $ 123.45”在此示例中将失败,因为$(与\$
匹配)不是在字符串开头之后立即。
\$
匹配$字符,反斜杠()的使用称为转义,用于匹配保留字符(在正则表达式的上下文中表示某些内容),在本例中为$ which表示匹配字符串的结尾,即此点后没有字符
\d
将匹配任何小数字符,即0-9
{n,m}
将匹配前一个元素的n到m个实例,如果n为0则表示匹配是可选的。
\.
将匹配小数点,它被转义为。是正则表达式中的保留字符,意味着匹配任何字符
(...)
将正则表达式作为一个整体包含在一起,还有其他后果,但我会留给你探索。在这种情况下,它纯粹是为了正则表达式中的下一个字符的好处
?
将匹配前面元素的0或1(在这种情况下,查找小数点和最多2个十进制字符的组,所以我们期望没有带结尾字符的小数点(0发生)或小数点,最多2个十进制字符(1次出现))
$
匹配字符串的结尾,此后字符串中不能包含任何字符。
答案 3 :(得分:1)
/^\$([0-9]{0-6})|^\$([0-9]{0-6})+\.([0-9]{0-2})$|\$\.([0-9]{0-2})$/