PDA

Просмотр полной версии : Regexp - указать отсутствие элемента.


incvizitor
25.02.2011, 13:13
Есть ссылка и дериктория передаваемая с сервака. Объединять их надо во флеше. Но только бывает что с сервака передают ссылку
http://google.com
, а бывает что
http://google.com/

так вот приходиться гадать делать мне:
result = s1 + "/" + s2
или
result = s1 + s2

Вообще нету ничего проще, делаем:

s = s.replace( /\/\//g, "/");

Проблема в том что линк в результате становиться:

http:/google.com/directory

то есть http://, становить http:/, что не хорошо. То есть надо менять только там где перед // нету "http:" Почитав доки по RegExp я так и не нашел как там указать что элемент отсутствует. Попробовал указать нулевой квантификатор

s = s.replace( /(http:){0,0}\/\//g, "/");

но он просто игнориться :(

_sestra_
25.02.2011, 13:21
Предлагаю просто удалять последний "/", а потом самому его писать:

var s1:String = 'http://google.ru/';
s1 = s1.replace( /\/$/, '');
var s2:String = 'dir';
var result:String = s1+'/'+s2;

//--> http://google.ru/dir

Gaen
25.02.2011, 13:30
trace(String("http://ya.ru/").replace(/^(.*)[^\/]$/, "$&/"));
trace(String("http://ya.ru").replace(/^(.*)[^\/]$/, "$&/"));
Если слэша в конце нет, то он дописывается, если есть - строка не матчится и ничего не происходит.

incvizitor
25.02.2011, 14:00
Спасибо, именно данную проблему решил.
Но хотелось бы в общем случае понять, как указать отсутствие элемента в regexp.

iNils
25.02.2011, 14:51
/(?<!:)\/\//g
или
/(?<!http:)\/\//g