正则表达式,用于验证整数部分中最多5位数字和最多2位十进制数字的格式

时间:2018-06-21 10:43:41

标签: java regex

我想验证一种字符串格式,该字符串格式应仅包含同时满足以下条件的数字两者

  1. 如果是整数,则最大位数为5。例如,12345可以,但是123456不能。

  2. 如果是带小数(或小数)的数字,则小数点后的最大位数为2。例如,10,23很好,但是10,234不好。

(注意:值使用逗号或点作为小数点。请记住,必须同时满足两个条件。例如123456,12不是很好,因为整数部分大于五位数)

我尝试过:

function kia_display_order_data_in_admin( $order ){  ?>
<div class="order_data_column">
    <h4><?php _e( 'Verwendungszweck' ); ?></h4>
    <?php 
         echo '<p><strong>' . __( 'Grund der Spende: ' ) . '</strong>'. get_post_meta( $order->id, '_cloudways_dropdown', true ) . '</p>';?>

</div>

该代码成功验证了条件1,但在条件2失败,例如值3,345通过了意外的验证。

我的正则表达式有什么问题?

2 个答案:

答案 0 :(得分:1)

这就是您要尝试的

"^(?:\\d{1,5}(?:[.,]\\d{0,2})?|[.,]\\d{1,2})$"

可读版本

 ^   
 (?:
      \d{1,5} 
      (?: [.,] \d{0,2} )?
   |  [.,] \d{1,2} 
 )
 $

答案 1 :(得分:0)

如果只需要一个reqex,则可以使用Wiktor Stribiewew建议的一个;

您始终可以根据自己的情况将其分为两部分。

^\d{5}$

^\d{5}\.\d{2}$

对于JAVA

    matches can be used for matching the complete string and the following if should suffice

    if(num.matches("\\d{5}") ||num.matches("\\d{5}\\.\\d{2}") ) {

    }