Я пытаюсь придумать с командой Javascript RegEx, который преобразует эти входы в следующие выходы:Javascript RegEx заменить условно удалить часть строки
INPUT DESIRED OUTPUT
mydomain.com --> mydomain.com
foo.mydomain.com --> mydomain.com
dev.mydomain.com --> dev.mydomain.com
dev-foo.mydomain.com --> dev.mydomain.com
Вот правила:
- Удалить поддомен из домена, если субдомно не начинается с символами «разработчиком»
- Если субдомен начинается с «разработчиком», то выход «dev.domain.com»
- Сохраните любой порт, указанный в конце домена.
Мои навыки регулярного выражения не позволяют мне. Это то, что у меня есть до сих пор:
'mydomain.com'.replace(/^(dev)?(-.*)?(mydomain.com)/,'$1.$3');
// .mydomain.com
'foo.mydomain.com'.replace(/^(dev)?(-.*)?(mydomain.com)/,'$1.$3');
// foo.mydomain.com
'dev-foo.mydomain.com'.replace(/^(dev)?(-.*)?(mydomain.com)/,'$1.$3');
// dev.mydomain.com
'dev.mydomain.com'.replace(/^(dev)?(-.*)?(mydomain.com)/,'$1.$3');
// dev.mydomain.com
Первые две неудачные и последние две работы. Какие-либо предложения?
Вот javascript, который работает, но я надеялся объединить его в одну команду замены регулярных выражений. Обратите внимание, что я также хочу сохранить любой порт, указанный в конце dmain.
var getHost = function() {
var host = window.location.host;
if (host.substring(0,3) === 'dev') {
return host.replace(/^(dev)?(-.*)?(mydomain\.com.*)/,'$1.$3');
}
else {
return 'mydomain.com';
}
}
Не могли бы вы объяснить общее правило, которое должно применяться здесь? Основываясь на вашем примере ввода/вывода, можно предположить, что вы ищете способ удаления дефисов, периодов и слова foo, когда они появляются до первого периода. Это то, что вы хотите? – jahroy
Можете ли вы объяснить немного больше, что вы хотите, чтобы ваше регулярное выражение работало? поэтому он берет строку «mydomain.com» или «(что-то) .mydomain.com' и всегда должен возвращать' mydomain.com', *, если только '' (что-то) 'содержит слово 'dev', в в каком случае это должно быть 'dev.mydomain.com' ?? Или вы просто хотите удалить какие-либо вхождения 'foo'? –
@jahroy Я обновил вопрос с правилами использования. Может быть, вы можете отменить нижний план? – Tauren