假设我们的项目有一个选项,需要用户输入网址URL~但是用户由于复制的问题或者是手动的问题可能会输入错误。

ooxx研究院为例,用户在输入的时候可能会不小心输成http://wwwxushine.comhttp://www.xushinecom  这样就与我们想要的正确的结果(https://www.xushine.net)是大相径庭的,所以我们应该要去解决这个问题~

比较急躁的童鞋们可能就想到了正则表达式来解决~ 毋庸置疑正则表达式解决是最好的方法~但是这个正则表达式怎么写呢?这就是一个新的问题出现了~

手快的同学们不假思索的就会写上:

http(s)?://([w-]+.)+[w-]+$

这一段正则表达式,粗看起来貌似没什么大的问题,但是当我们仔细的看一下就发现了,问题还是多多哦~这个正则表达式最大的问题在于这个正则只能匹配形似http://192.168.1.1这样的字符串,但是如果后面加一个单词就不行了,比如http://192.168.1.1/abc

所以ooxx研究院给出了一个不错的解决方案,直接贴C#代码:

/// <summary>
/// 检测串值是否为合法的网址格式
/// </summary>
/// <param name=”strValue”>要检测的String值</param>
/// <returns>成功返回true 失败返回false</returns>
public static bool CheckIsUrlFormat(string strValue)
{
return Utility.CheckIsFormat(@”(http://)?([w-]+.)+[w-]+(/[w- ./?%&=]*)?”, strValue);
}

/// <summary>
/// 检测串值是否为合法的格式
/// </summary>
/// <param name=”strRegex”>正则表达式</param>
/// <param name=”strValue”>要检测的String值</param>
/// <returns>成功返回true 失败返回false</returns>
public static bool CheckIsFormat(string strRegex,string strValue)
{
if(strValue != null && strValue.Trim() != “”)
{
Regex re = new Regex(strRegex);
if (re.IsMatch(strValue))
{
return true;
}
else
{
return false;
}
}
return false;
}

评论被关闭。