对于0到100之间的数字和/或以点(。)开头的数字的Angular,`required`输入字段

问题描述 投票:-1回答:2

after inserting the expression given by you I am finding a lexer error check this image

<div class="col-md-6 nopad">
    <div class="form-group">
        <label class="control-label text-left">(%)</label>
        <input type="text" required class="form-control"
               ng-pattern="^(?!0+(?:\.0+)?$)\[0-9]?\[0-9](?:\.\[0-9]\[0-9]?)?$"
               ng-blur="($ctrl.expenseForm.insurance_percent.$valid)?$ctrl.updateAmountValue('insurance',$ctrl.expenses.total_cfcost):''" 
               id="insurance_percent" name="insurance_percent"
               ng-model="$ctrl.expenses.insurance_percent"> 
        <div class="help-block"
             ng-messages="$ctrl.expenseForm.insurance_percent.$error"
             ng-if="$ctrl.expenseForm.insurance_percent.$dirty">
            <p class="text-danger"
               ng-message="required">This field is required.</p>
            <p class="text-danger"
               ng-message="pattern">Value should between 0 to 100.</p> 
        </div>                                    
    </div>
</div>

它应该接受十进制数或验证0到100之间的数字,并且它应该接受以点(。)开头的十进制值,在开始时不需要为十进制数,也应该在0之间和100。

javascript html angularjs regex
2个回答
0
投票

^(?=[0-9.])[0-9]{0,2}(\.[0-9]+)?$|^100$ 我将问题分为4个部分 1)它应该是(?=[0-9.])与数字或点匹配的先行 2)整数部分:[0-9]{0,2}是optionnal 3)小数部分:(\.[0-9]+)?是optionnal 4)100例


0
投票

我可能会尝试一个稍微简单的正则表达式,它不是一个特别复杂的问题,它会使可维护性更容易。

^[0-9]{0,2}(\.[0-9]+)?$之类的东西

^                              Start of string
 [0-9]{0,2}                    Anywhere between 0 and 2 numbers
           (\.                 Start matching group and look for decimal point
              [0-9]+           Any numbers after decimal point (must be at least one)
                    )?$        End matching group, match it either 0 or 1 times and ensure string end.

请注意,这也将匹配一个空白字符串,这意味着您不会在没有输入时收到警告!

https://regex101.com/r/IUM5YK/2

© www.soinside.com 2019 - 2024. All rights reserved.