2012-05-16 2 views
4

Так у меня есть этот код:Regex, чтобы проверить, HTTP или HTTPS существует в строке

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

спасибо

+0

FWIW, http://gskinner.com/RegExr/ это отличный способ узнать о регулярных выражениях. – timrwood

ответ

10

Судя по ней, вы просто проверить, если HTTP или HTTPS присутствует в строке. Для этой цели регулярные выражения немного перегружены. Попробуйте этот простой код, используя indexOf:

function validateText(str) 
{ 
    var tarea = str; 
    if (tarea.indexOf("http://") == 0 || tarea.indexOf("https://") == 0) { 
     // do something here 
    } 
} 
+1

спасибо, позвольте мне попробовать. но он видит каждое значение tarea как http или https. – magicianiam

+1

Этот код проверяет, что в строке есть * оба * "http: //" и "https: //". –

+0

он опустошает значение для любого ввода – magicianiam

2

Вы пытались использовать слово сломать вместо символа старта-строки?

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

кажется, делать то, что я думаю, что вы хотите. См. Здесь: http://jsfiddle.net/BejGd/

+0

жаль, что нет. Я частично новичок в регулярном выражении, и я не был уверен, что они имели в виду со словом. – magicianiam

3

^ в начале соответствует началу строки. Просто удалите его.

5

Попробуйте это:

function validateText(str) 
{ 
    var tarea_regex = /(http(s?))\:\/\//gi; 
    if(tarea_regex.test(str)) 
    { 
     $('#textVal').val(''); 
    } 
}