验证Twitter URL

时间:2010-07-21 07:56:05

标签: javascript regex 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

它的工作正常。

有什么想法吗?

由于

4 个答案:

答案 0 :(得分:1)

function isTwitterHandle(handle) { 
  if (handle.match(/^((?:http:\/\/)?|(?:https:\/\/)?)?(?:www\.)?twitter\.com\/(\w+)$/i) || handle.match(/^@?(\w+)$/)) return true;
  return false;
}

答案 1 :(得分:0)

您还需要转义转义序列中的反斜杠:

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

我会推荐这个正则表达式:

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

答案 2 :(得分:0)

这是因为您使用字符串文字定义正则表达式的方式。你需要转义转义字符(双反斜杠):

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

在上面,我也更改了开头,以便它匹配http://www.twitter.com/test_user

或者,使用RegExp文字语法,但这意味着您必须转义/

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

答案 3 :(得分:0)

-http://twitter.com/username(这是http) -https://twitter.com/username(这是https) -twitter.com/username(不含http) - @ username(带@) -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;
            }