2010-07-21 139 views
1

我想驗證一個twitter網址,以便至少它包含一個用戶名。我不在乎它是否存在,只是有一個。驗證twitter網址

我使用的JavaScript正則表達式

var re = new RegExp('((http://)|(www\.))twitter\.com/(\w+)'); 
alert(re.test('http://twitter.com/test_user')); 

之下,但它無法正常工作。

奇怪的是,我創建,並在此URL

http://www.regular-expressions.info/javascriptexample.html

它工作得很好,測試上述正則表達式。

任何想法?

感謝

回答

0

你需要躲避反斜槓在轉義序列太:

var re = new RegExp('((http://)|(www\\.))twitter\\.com/(\\w+)'); 

而且我會推薦這正則表達式:因爲你的方式」

new RegExp('^(?:http://)?(?:www\\.)?twitter\\.com/(\\w+)$', 'i') 
+0

謝謝大家的澄清 非常感謝 – Thomas 2010-07-21 08:19:56

0

這是通過使用字符串文字重新定義正則表達式。你需要躲避轉義字符(雙反斜線):

'^(http://)?(www\.)?twitter\.com/(\\w+)' 

在上面,我也改變了開始,以便它匹配http://www.twitter.com/test_user

另外,使用正則表達式文字語法,雖然這意味着你必須逃脫/

var re = /^http:\/\/)?(www\.)?twitter\.com\/(\w+)/; 
0

-http://twitter.com/username(這是HTTP) -https://嘰嘰喳喳的.com /用戶名(這是HTTPS) -twitter.com/username(不含http) - @用戶名(與@) -username(無@)

var username = "@test"; 
    var r1 = new RegExp('^((?:http://)?|(?:https://)?)?(?:www\\.)?twitter\\.com/(\\w+)$', 'i'); 
      if (r1.test(username) == false) { 
       var r2 = new RegExp('^@?(\\w+)$', 'j'); 
       if (r2.test(username) == true) 
        return true; 
       else 
        return false; 
      } else { 
       return true; 
      } 
1
function isTwitterHandle(handle) { 
    if (handle.match(/^((?:http:\/\/)?|(?:https:\/\/)?)?(?:www\.)?twitter\.com\/(\w+)$/i) || handle.match(/^@?(\w+)$/)) return true; 
    return false; 
} 
+0

這可能是正確的解決方案,但我認爲對代碼的一點解釋將有助於更好地理解。 – 2014-05-23 14:36:18