有关文本框条目的正则表达式验证的快速问题。基本上我有一个文本框,我用于网站地址形式的用户输入。用户可以输入任何内容(它不必是有效的网站地址 - 即www.facebook.com。他们可以输入“等等等等”,这很好,但不会运行。
我所追求的是验证不同的语言,阿拉伯语,希腊语,中文等,因为目前我只允许使用英文字符。
该方法的代码如下。我相信我必须将其从白名单切换到黑名单,所以不要看到匹配的内容,而是将表达式更改为无效字符,如果用户输入其中一个,请不要允许它。
public static bool IsValidAddress(string path)
{
bool valid = false;
valid = (path.Length > 0);
if (valid)
{
string regexPattern = @"([0-9a-zA-Z*?]{1})([-0-9a-zA-Z_\.*?]{0,254})";
// Elimate the '"' character first up so it simplifies regular expressions.
valid = (path.Contains("\"") == false);
if (valid)
{
valid = IsValidAddress(path, regexPattern);
}
if (valid)
{
// Need an additional check to determine that the address does not begin with xn--,
// which is not permitted by the Internationalized Domain Name standard.
valid = (path.IndexOf("xn--") != 0);
}
}
return valid;
}
正如您所看到的,我包含了0-9a-zA-Z,但默认情况下这将消除其他语言,而我希望包含这些语言。
非常感谢任何帮助。如果我困惑任何人,抱歉!如果需要,我可以提供更多信息。
感谢。
答案 0 :(得分:1)
我不知道为什么你要用Regex来验证Uri。 .Net的Uri课程肯定比你的任务好得多,不是吗?
Uri uri;
if(!Uri.TryParse(uriString, UriKind.Absolute, out uri))
{
//it's a bad URI
}