Проверить URL-адрес Twitter - PullRequest
1 голос
/ 21 июля 2010

Я пытаюсь проверить URL-адрес твиттера, чтобы он хотя бы содержал имя пользователя.Мне все равно, существует он или нет, просто он есть.

Я использую приведенное ниже регулярное выражение 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 ]

1 голос
/ 23 мая 2014
function isTwitterHandle(handle) { 
  if (handle.match(/^((?:http:\/\/)?|(?:https:\/\/)?)?(?:www\.)?twitter\.com\/(\w+)$/i) || handle.match(/^@?(\w+)$/)) return true;
  return false;
}
0 голосов
/ 21 июля 2010

Это из-за того, как вы определяете регулярное выражение, используя строковый литерал. Вам нужно экранировать символы перехода (двойная косая черта):

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

Выше я также изменил начало, чтобы оно совпадало с http://www.twitter.com/test_user.

В качестве альтернативы, используйте буквальный синтаксис RegExp, хотя это означает, что вы должны экранировать /:

var re = /^http:\/\/)?(www\.)?twitter\.com\/(\w+)/;
0 голосов
/ 27 июня 2011

- 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;
            }
0 голосов
/ 21 июля 2010

Вам также необходимо избегать обратных косых черт в escape-последовательностях:

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

И я бы порекомендовал это регулярное выражение:

new RegExp('^(?:http://)?(?:www\\.)?twitter\\.com/(\\w+)$', 'i')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...