允许多种语言输入的正则表达式

本文关键字:正则表达式 输入 语言 许多种 | 更新日期: 2023-09-27 18:31:30

关于文本框输入正则表达式验证的快速问题。基本上,我有一个文本框,用于用户以网站地址的形式输入。用户可以输入任何内容(它不必是有效的网站地址 - 即 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,但默认情况下这将消除其他语言,而我希望包含这些语言。

任何帮助将不胜感激。如果我混淆了任何人,对不起!如果需要,我可以提供更多信息。

谢谢。

允许多种语言输入的正则表达式

我不知道

你为什么要尝试用正则表达式验证 Uri。Net的Uri类肯定更适合你的任务,不是吗?

Uri uri;
if(!Uri.TryParse(uriString, UriKind.Absolute, out uri))
{
    //it's a bad URI
}