13

所以我有这个代码:

function validateText(str)
{
    var tarea = str;
    var tarea_regex = /^(http|https)/;
    if(tarea_regex.test(String(tarea).toLowerCase()) == true)
    {
        $('#textVal').val('');
    }
}

这非常适合:

https://hello.com
http://hello.com

但不适用于:

这是一个网站http://hello.com asdasd asdasdas

尝试做一些阅读,但我不知道在哪里放置 * ?因为他们会根据这里检查字符串上的任何地方的表达式-> http://www.regular-expressions.info/reference.html

谢谢你

4

5 回答 5

20

从外观上看,您只是在检查字符串中是否存在 http 或 https。为此目的,正则表达式有点矫枉过正。试试这个简单的代码indexOf

function validateText(str)
{
    var tarea = str;
    if (tarea.indexOf("http://") == 0 || tarea.indexOf("https://") == 0) {
        // do something here
    }
}
于 2012-05-16T19:40:24.343 回答
16

尝试这个:

function validateText(string) {
  if(/(http(s?)):\/\//i.test(string)) {
    // do something here
  }
}
于 2014-09-29T09:50:26.970 回答
4

^开头的 匹配字符串的开头。只需将其删除。

var tarea_regex = /^(http|https)/;

应该

var tarea_regex = /(http|https)/;
于 2012-05-16T19:39:38.960 回答
4
((http(s?))\://))

这里有很多想法:http ://regexlib.com/Search.aspx?k=URL&AspxAutoDetectCookieSupport=1

于 2012-05-16T19:40:07.197 回答
3

您是否尝试过使用分词符而不是行首字符?

var tarea_regex = /\b(http|https)/;

它似乎做我认为你想要的。见这里:http: //jsfiddle.net/BejGd/

于 2012-05-16T19:39:02.083 回答