Regex для соответствия www.example.com, только если http: // отсутствует - PullRequest
2 голосов
/ 15 мая 2009

У меня есть следующее регулярное выражение, которое не работает. Я хочу сопоставить строку "www.example.com", но не строку "http://www.example.com' (или" anywww.example.com "в этом отношении):

/\bwww\.\w.\w/ig

Это используется в JavaScript следующим образом:

text = text.replace(/\bwww\.\w.\w/ig, 'http://$&');

Я знаю, что вторая часть регулярного выражения тоже не работает правильно, но именно часть http: // меня смущает. В настоящее время он будет соответствовать 'http://www.example.com', что приведет к выводу' http://htpp://www.example.com'.

Ответы [ 5 ]

4 голосов
/ 15 мая 2009

Вы ищете вхождение www.example.com в большей строке? Может быть, вы можете быть более точным о том, что вы хотите, чтобы точно соответствовать, но что-то вроде этого может работать для вас:

text = text.replace(/(\s)(www\.\w+\.\w+)/ig, "$1http://$2");

Проблема с \b (что соответствует границам слов) заключается в том, что он также совпадает между http:// и www, поскольку / не является символом слова.

3 голосов
/ 15 мая 2009

Делает ли это то, что вы хотите? Якорь гарантирует, что текст начинается с www. Но очевидно, что это не удастся с другими поддоменами.

text = text.replace(/^www\.\w+\.\w+$/ig, "http://$&");

EDIT: исправлено благодаря комментарию Криса Латца. Я проводил тестирование ранее, но странная комбинация ошибок (отсутствие привязки, неэкранированная точка и т. Д.), Казалось, работала Я должен повторить, что это все равно хрупко.

2 голосов
/ 15 мая 2009

Может, как-то так?

text = text.replace(/(^|\s)(www(?:\.\w+){2,})/ig, "$1http://$2");

Это будет соответствовать URL в:

Но не:

0 голосов
/ 15 мая 2009

Вы можете использовать отрицательный взгляд за утверждением. Что-то вроде ...

(?<!http\:\/\/)(?:www.example.com)

0 голосов
/ 15 мая 2009

Вы можете использовать индикатор (привязку) ^ , чтобы текст совпадения начинался с www :

echo -e "http://www.example.com\nanythingwww.example.com\nwww.example.com" | grep "^www.example.com"
www.example.com
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...