#javascript #jquery #regex
#javascript #jquery #регулярное выражение
Вопрос:
У меня есть URL, подобный https://randomsitename-dd555959b114a0.mydomain.com и хотите удалить часть URL-адреса -dd555959b114a0.
Таким образом, randomsitename — это случайное имя, а домен — статическое доменное имя.
Возможно ли удалить часть с помощью jquery или javascript?
Комментарии:
1. С помощью JavaScript — да (jQuery не предлагает никаких улучшений регулярных выражений). Итак, где вы застряли?
2. Это должно сработать :
yourUrlString.replace(/(https?://[a-zA-Z] )-[^-] (.mydomain.com/?)/, '$1$2')
.
Ответ №1:
Посмотрите на этот код, который использует регулярное выражение
var url = "https://randomsitename-dd555959b114a0.mydomain.com";
var res = url.replace(/ *-[^.]*. */g, ".");
Ответ №2:
Обычно лучше всего кодировать для всех возможных случаев, и поскольку дефисы разрешены в любой части доменных имен, вы, скорее всего, захотите использовать более конкретный RexExp, такой как:
^ # start of string
( # start first capture group
[a-z] # one or more letters
) # end first capture group
:// # literal separator
( # start second capture group
[^.-] # one or more chars except dot or hyphen
) # end second capture group
(?: # start optional non-capture group
- # literal hyphen
[^.] # one or more chars except dot
)? # end optional non-capture group
( # start third capture group
. # one or more chars
) # end third capture group
$ # end of string
Или без комментариев:
^([a-z] )://([^.-])(?:-[^.] )?(. )$
(Не забывайте избегать косых черт, если вы используете литеральную форму для регулярных выражений, а не создаете их как объекты, т. Е. /literal/form/
Против new RegExp('object/form')
)
Используется при замене строки, тогда второй аргумент должен быть: $1://$2$3
Предыдущие ответы не будут выполнены для URL -адресов типа http://foo.bar-baz.com
или http://foo-bar.baz-blarg.com
.
Ответ №3:
Вы могли бы попробовать это регулярное выражение,
(.*)(-[^.]*)(.*$)
Ваш код должен быть,
var url = "https://randomsitename-dd555959b114a0.mydomain.com";
var res = url.replace(/(.*)(-[^.]*)(.*$)/, "$1$3");
//=>https://randomsitename.mydomain.com
Объяснение:
(.*)
соответствует любому символу 0 или более раз, и он был сохранен в группе 1, потому что мы помещаем эти символы в paranthesis. Всякий раз, когда механизм регулярных выражений находит-
, он перестает сохранять его в group1.(-[^.]*)
Начиная с-
литерала.
сохраняются в group2. Он прекращает сохранение, когда находит буквальную точку.(.*$)
От буквальной точки до последнего символа сохраняются в group3.$1$3
в заменяющей части печатаются только сохраненные группы1 и 3.
или
(.*)(?:-[^.]*)(.*$)
Если вы используете это регулярное выражение, в заменяющей части вам нужно поставить только $1
и $2
.
Комментарии:
1. Поскольку захват является дорогостоящим, ваша вторая (игнорируемая) группа захвата была бы лучше в качестве группы без захвата, т. Е.
(?:...)