2016-09-21 4 views
0

мне нужно обрезать эту строку ->http://hokuspokus/ixdebude/ix и я точно нужна эта часть строки /ixdebude/IXрегулярное выражение для связи

У меня есть 2 выражения для решения моей проблемы.

Мой первый регулярное выражение ->

/(.*)\/(.*)(\/)(.*)\/*/g возвращает массив [5] группы.

моего второго регулярное выражение ->

/(\/............)$(.*?)$/g возвращает /ixdebude/IX

Может кто-нибудь из вас дать мне другое регулярное выражение, лучшее без тысячи точек?

+1

Почему бы просто не использовать 'split'? – j08691

+2

Кроме того, эта ссылка/строка не является допустимым URL. Если вашему регулярному выражению необходимо поддерживать действительные URL-адреса, вы можете обратиться к нему. Также - что особенного в части 'ixdebude/ix'? Это первая часть после имени домена? Или что-то другое? –

+2

Знаете ли вы, что такое доменное имя заранее? Это сделает его тривиальным и не требует никакого регулярного выражения. – vlaz

ответ

3

Вы могли бы попробовать это

var parser = document.createElement('a'); 
parser.href = "http://example.com:3000/pathname/?search=test#hash"; 

parser.protocol; // => "http:" 
parser.hostname; // => "example.com" 
parser.port;  // => "3000" 
parser.pathname; // => "/pathname/" 
parser.search; // => "?search=test" 
parser.hash;  // => "#hash" 
parser.host;  // => "example.com:3000" 

https://gist.github.com/jlong/2428561

+1

Да, не мое печально. Кредит отправляется на - https://gist.github.com/jlong. Просто поместите код здесь, если он когда-нибудь удалится. –

4

Вы можете использовать регулярное выражение как это:

//.*?(/.*) 

Working demo

Для JavaScript, вы можете использовать:

var re = /\/\/.*?(\/.*)/; 
var str = 'http://hokuspokus/ixdebude/ix'; 
var m; 

if ((m = re.exec(str)) !== null) { 
    if (m.index === re.lastIndex) { 
     re.lastIndex++; 
    } 
    // View your result using the m-variable. 
    // eg m[0] etc. 
} 
Смежные вопросы