0

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

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

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

一般的想法是不应该允许用户选择他的用户名,这看起来像一个 url。

这是我尝试过的不同模式的尝试,但这些模式以一种或另一种方式失败。

<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>

任何帮助都深表感谢

祖拜尔

4

2 回答 2

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!");
于 2013-01-18T14:16:29.197 回答
0

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

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

我试过这个作品。

编辑:

是的,我也忘记转义点了。利用/^((http(s)?:\/\/(www\.)?)|(www\.)).*/

于 2013-01-18T13:57:19.193 回答