2012-05-16 23 views
4

所以我有這樣的代碼:正則表達式,如果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(''); 
    } 
} 
相關問題