我有以下正则表达式:
ValidationExpression="[0-9]+(,[0-9]+)*"
它允许使用以下格式的数字:12,2345或231,23454
现在我想要包含一个条件,总体上只允许7位数除外 逗号。 以下是修改后的代码
以下是项目模板
项目模板中还有一个单选按钮
<asp:TextBox runat="server" ID="tbText" CssClass="someclass" MaxLength="11"
%>'></asp:TextBox>
<asp:RegularExpressionValidator ValidationExpression="[0-9]+(,[0-9]+)*" ID="ValComp" runat="server" CssClass="asdf"
ControlToValidate="tbMileage" Text="*" Enabled="false" Display="Dynamic"/>
<asp:CustomValidator ID="cvalMileage" runat="server" CssClass="adsf" Text="*" Display="Dynamic">
</asp:CustomValidator>
<asp:CustomValidator ID="CustomValidator1" ClientValidationFunction="functionName"
runat="server" CssClass="asd" Text="*" Display="Dynamic">
</asp:CustomValidator>
由于我想验证在转发器中选中相应文本框的单选按钮,下面是我编写的代码
var selText = $(".Class1 input[type=radio]:checked").closest(".Class1").find(".subClassText input[type=text]").val();
alert('Hi');
if (selText.replace(",", "").length <= 7) {
args.IsValid = true;
}
else {
args.IsValid = false;
}
警报触发两次并且基于args为False我有一个触发两次的弹出窗口
感谢。
答案 0 :(得分:2)
正则表达式并不擅长此问题,但如果您将输入限制为最多只有一个逗号,则此表达式将适合:
([0-9]{0,0}[,]?[0-9]{0,7})|([0-9]{0,1}[,]?[0-9]{0,6})|([0-9]{0,2}[,]?[0-9]{0,5})|([0-9]{0,3}[,]?[0-9]{0,4})|([0-9]{0,4}[,]?[0-9]{0,3})|([0-9]{0,5}[,]?[0-9]{0,2})|([0-9]{0,6}[,]?[0-9]{0,1})|([0-9]{0,7}[,]?[0-9]{0,0})
您会发现此问题不适合正则表达式,因为此表达式固定为最大值7。
答案 1 :(得分:0)
您可以使用CustomValidator控件进行客户端验证,如下所示:
ASPX代码:
<asp:CustomValidator id="CustomValidator1" runat="server"
ControlToValidate="YourControlNameHere"
ClientValidationFunction="ClientValidation"
OnServerValidate="ServerValidation"
ErrorMessage="Invalid number." />
JavaScript(使用jQuery):
function ClientValidation(source, arguments)
{
var inputText = arguments.Value;
var expression = /^[0-9]+(,[0-9]+)*$/;
if (expression.test(inputText) && inputText.replace(",", "").length <= 7) {
arguments.IsValid = true;
}
else {
arguments.IsValid = false;
}
}
C#代码背后:
public void ServerValidation(object source, ServerValidateEventArgs args)
{
string inputText = args.Value;
Regex regex = new Regex(@"^\d+(,\d+)*$");
if (regex.IsMatch(inputText) && inputText.Replace(",", "").Length <= 7)
{
args.IsValid = true;
}
else
{
args.IsValid = false;
}
}