.net 如何从正则表达式验证文本框

.net 如何从正则表达式验证文本框,.net,regex,.net,Regex,我想验证0到100之间的文本框,包括十进制值“12.5”。问题是我的网站使用了不同的语言。所以下面的代码适用于英语,但不适用于荷兰语,因为它们用于“to” <div class="medium-6 columns"> <asp:TextBox ID="textAdvPacPrecentage" class="PriceEditoTxtBox left PriceEditorAdminFee" runat="server" Text="0"

我想验证0到100之间的文本框,包括十进制值“12.5”。问题是我的网站使用了不同的语言。所以下面的代码适用于英语,但不适用于荷兰语,因为它们用于“to”

<div class="medium-6 columns">
                    <asp:TextBox ID="textAdvPacPrecentage" class="PriceEditoTxtBox left PriceEditorAdminFee" runat="server" Text="0"></asp:TextBox>
                    <p>%</p>
                    <asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server" Display="Dynamic"
                        Text="*" ControlToValidate="textAdvPacPrecentage" ValidationGroup="SavePriceList"
                        ForeColor="Red" CssClass="pr-req" ValidationExpression="^([0-9]{1,2}){1}(\.[0-9]{1,2})?$"></asp:RegularExpressionValidator>
                     <asp:RequiredFieldValidator ID="clientAdvancePacPerecentage" runat="server" Text="*" Display="Dynamic"
                        ToolTip="Advance package percentage invalid number" ForeColor="Red" CssClass="pr-req" ControlToValidate="textAdvPacPrecentage"
                        ValidationGroup="SavePriceList" />
                </div>
需要解决此问题。

请使用此正则表达式

^(([1-9]?\d|100)([\.,]\d?[1-9])?)$
演示 您可以使用

ValidationExpression="^(?:(?:[0-9]|[1-9][0-9]?)(?:[.,][0-9]{1,2})?|100(?:[.,]0{1,2})?)$"

细节

^-字符串的开头 ?:?:[0-9]|[1-9][0-9]??:[.,][0-9]{1,2}?|100?:[.,]0{1,2}? - 与两个备选方案之一匹配的非捕获组: ?:[0-9]|[1-9][0-9]??:[.,][0-9]{1,2}? - 0到9之间的数字或10到99之间的数字参见?:[0-9]|[1-9][0-9]?然后是一个可选的序列。或者,然后一个或两个数字看到?:[,][0-9]{1,2}?部分 |-或 100?:[.,]0{1,2}? - 100,然后是可选的顺序。或者,然后是一两个0字符。 $-字符串结尾
你没有回答当前的问题。1不验证0-100个数字,2不匹配按照OP要求支持荷兰数字格式的小数部分。您没有指定它。你说的是十进制。十进制表示以10为基数。分数可以像实数一样表示。请把你的描述清楚。我照你说的做了。十进制表示我想输入12.5,55.75的十进制值,这不是十进制在数学中的意思。你可以是实数或分数。使用十进制这个词可能会混淆。允许使用整数吗?20岁左右?没有分数?100可以有像100.1这样的分数,或者100是最大的数字吗?我发布了支持英语和荷兰语十进制分隔符格式的文章。你的正则表达式不能捕获像9.123这样的数字,@Predicate,它不应该,请参见\[0-9]{1,2}?在OP正则表达式中。但他说明了所有从0到100的分数。9.123是其中一个。我明白了,他把它放在正则表达式中了。对的但问题陈述并不清楚that@Predicate您正在考虑需求。问题中没有9.123示例,原始正则表达式不匹配小数部分中有3个或更多数字的数字。我们不应更改与问题无关的正则表达式部分。让OP提供反馈。