2010-07-21 103 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