对多个文本框进行Regex验证?c#asp.net
本文关键字:验证 Regex c#asp net 文本 | 更新日期: 2023-09-27 17:53:10
编辑2011年5月2日
好的,所以我需要让我的验证客户端,所以我在c#中需要下面要求的东西才能真正在jquery中。我也将验证服务器端,所以我会感谢更多的输入。
原始问题
好吧,我今天真的在进行一次有趣的问题之旅!!!
我之前的问题是针对一个特定的正则表达式。现在我有了它,它起作用了。。如何在多个文本框中展开?我不想使用多个正则表达式验证工具,因为它们会扰乱我的设计空间,我认为这不是一个非常优雅的解决方案(这是一个学位项目(
有没有我可以写的方法?沿着的路线
public validator(string)
{
doessomething.tostring
return true/false
}
和访问
if (validator(txtsomething.text.tostring()) = true)
{
Dothis
}
else
{
dothis
}
如果我的问题是垃圾,请耐心等待:(感谢``
创建一个自定义控件怎么样?我已经编辑了我的答案,包括jQuery以及服务器端验证。我不知道你在用什么正则表达式,所以我只使用了一个简单的正则表达式来测试字母。
javascript(还包括jQuery文件(:
<script language="javascript" type="text/javascript">
function validateText(source, args) {
var allTextFieldsValid = true;
$(".noNumbers").each(function () {
if (!/^[a-zA-Z]*$/.test(this.value)) {
allTextFieldsValid = false;
}
});
args.IsValid = allTextFieldsValid;
}
</script>
.aspx页面:
// set a specific css class on the textboxes you want to check so that jQuery can
// find them easily
<asp:TextBox ID="TextBox1" runat="server" CssClass="noNumbers"></asp:TextBox>
<asp:TextBox ID="TextBox2" runat="server" CssClass="noNumbers"></asp:TextBox>
<asp:Button ID="SubmitButton" runat="server" Text="submit" OnClick="Submit_Click" />
<asp:CustomValidator ID="MyValidator" runat="server"
OnServerValidate="Text_Validate" Text="Oops, sorry, no numbers!"
ClientValidationFunction="validateText"></asp:CustomValidator>
代码背后:
protected void Submit_Click(object sender, EventArgs e)
{
if (Page.IsValid)
{
// do stuff
}
else
{
// do other stuff
}
}
protected void Text_Validate(object source, ServerValidateEventArgs args)
{
args.IsValid = true;
// I've done each textbox by id, but depending on how many you might want to loop through the controls instead
if (!IsTextValid(TextBox1.Text))
{
args.IsValid = false;
}
if (!IsTextValid(TextBox2.Text))
{
args.IsValid = false;
}
}
private bool IsTextValid(string myTextValue)
{
string myRegexString = @"^[a-zA-Z]*$";
return Regex.IsMatch(myTextValue, myRegexString);
}
希望这能有所帮助!
我不确定你的确切意图,但你似乎基本上是对的:
每次假设您正在处理"TextBoxChanged"事件,您只需执行以下操作:
if(!string.IsNullOrEmpty(MyTextBox.Text))
{
if(ValidateInput(MyTextBox.Text)
{
[do stuff here]
}
else
{
[do other stuff here]
}
}
然后你的ValidateInput(string stringToCheck)
方法看起来像:
private bool ValidateInput(string stringToCheck)
{
string patern = [your regex patern]
//Check to make sure that I've got this method call right- you want to make sure
//that there are matches, basically
if(Regex.Matches(patern, stringToCheck).Count >= 1) return true;
return false;
}
然后会说"如果我的正则表达式有任何匹配项,做一件事,如果没有,做其他事情">
好吧,您可以在表单/页面中找到所有文本框控件并应用验证器。
假设您正在使用winforms应用程序,请尝试以下操作:
//。Net Framework 3.5
foreach (TextBox textBox in MyForm.Controls.OfType<TextBox>())
{
if (validator(textBox.Text) == true)
{
// Do this
}
else
{
// Do that
}
}
如果有帮助,请告诉我。
PS.:您可能需要为控制容器=/
为所有TextBox控件编写事件处理程序:
OnLoad事件处理程序:
foreach (Control ctrl in Controls) {
TextBox tbox = ctrl as TextBox;
if (tbox != null) {
tbox.TextChanged += new EventHandler(TextBox_TextChanged);
}
}
void TextBox_TextChanged(object sender, EventArgs e) {
TextBox tbox = sender as TextBox;
if (tbox != null) {
if (validator(tbox.Text)) {
// DoThis
} else {
// DoThat
}
}
}
考虑扩展正则表达式验证器。
开发验证器控制