请帮助构建正则表达式

时间:2013-01-18 13:53:09

标签: regex

好吧,我尝试开发一种模式,但无法成功构建一个能够检查文本是否符合以下条件的正则表达式

它不应该以下面的内容开头

    http://
    http://www.
    http://
    http://www.
    www.

一般的想法是不应该允许用户选择他的用户名,这似乎是一个网址。

这是我尝试的不同模式,但是这些模式以某种方式失败。

<script type="text/javascript" language="javascript">
    function validate(name){

        var pattern = /(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/;
        var pattern = /^((http|https):\/\/)?[a-z0-9]+([-.]{1}[a-z0-9]+).[a-z]{2,5}(:[0-9]{1,5})?(\/.)?$/;
        var pattern = ^([^www\.]([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-]*[a-zA-Z0-9])\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\-]*[A-Za-z0-9])$;

        var _test = pattern.test(name);
        alert("_test is " + _test);

        return false;
     }

</scipt>

非常感谢任何帮助

祖拜尔

2 个答案:

答案 0 :(得分:1)

可以简化为

://|www.

以下示例位于C#:

//Pattern
string pattern = "://|www.";
//Execute the regex
Match match = Regex.Match(testInput, pattern);
//Test result 
if (match.Success)
   Console.WriteLine("It's an url!");

答案 1 :(得分:0)

这是你的模式^((http(s)?://(www.)?)|(www.)).*
你可以测试它here

function validate(name){
    var pattern = /^((http(s)?:\/\/(www.)?)|(www.)).*/;
    return pattern.test(name);
}

我尝试过这种方法。

修改

是的,我忘了逃避点。使用/^((http(s)?:\/\/(www\.)?)|(www\.)).*/