|
Ни дня без регулярки
Для обычного и защищенного соединения нужно убрать "pathname" из строки. Метод split() со всеми вытекающими методами не интересен, но имеет право на жизнь.
Ваши решения. 😺 var url = 'http://sitename.ru/pathname/?search'; url = url.replace(/(http[s]?:\/\/.+\/)(.+)(\?.+)/, '$1$3'); alert(url); |
Это типа "пятничная задачка", во вторник? ))
var url = 'http://sitename.ru/path/name/?search'; url = url.replace(/^(https?:\/\/[^\/]+\/)[^?#]+/, '$1'); alert(url); |
Цитата:
Решение полезное: логические отрицание, и только с одной ссылкой на одно подвыражение. Разбираюсь почему в подставляемую строку попадает ?search. |
Цитата:
Очень грубо говоря get-параметр тут, как "world" здесь: 'hello world'.replace('hello ',''); Тут это видно: https://regex101.com/r/S3JufM/1 |
Цитата:
Найденное соответствие заменяем на возвращенную подстроку http://sitename.ru/ не затрагивая get параметр. Не затрагиваем его, потому что полное регулярное выражание его не находит. Цитата:
|
Возникла задача. Нужно найти: первое сопоставление - любой символ до пробела и дефиса, второе - окончание строки после дефиса с пробелом.
Ваше решение. var str = 'x - Learn x in - y'; str = str.match(/^([^\s-]+)(?:[\s-]+)(.+)$/); alert(JSON.stringify('1: ' + str[1] + ', 2: ' + str[2])); |
var str = [' - Learn _ in - 111', 'x - Learn x in - 22', 'xyz - Learn xyz in - 3', '44444']; for (i in str) { s = str[i].match(/^(?:[^\s-]*?)([^\s-])?(?:[\s-]+)(.+)$/); s && alert(JSON.stringify('1: ' + s[1] + ', 2: ' + s[2])); } |
Белый шум,
Да, забыл уточнить. Соответствие повторить один и более раз до первого дефиса. |
Rasy,
Что именно нужно получить для каждого из входных данных: [' - Learn _ in - 111', 'x - Learn x in - 22', 'xyz - Learn xyz in - 3', '44444'] ?? |
Белый шум,
В третьем элементе xyz должен попадать в соответствие под 1-ым индексом. var str = 'xyz - Learn x in - y'; str = str.match(/^([^\s-]+)(?:[\s-]+)(.+)$/); alert(JSON.stringify('1: ' + str[1] + ', 2: ' + str[2])); |
Часовой пояс GMT +3, время: 05:49. |
|