У меня возникла проблема с встроенной функцией .split
при ее использовании в паре с повторным просмотром.
в качестве примера можно привести следующую ситуацию:
var my_string = 'href=/Something/Something_else?=Something';
теперь я использую этот фрагмент кода для разделения над строкой:
var parts = my_string.split(/=/);
При взгляде на console.log
parts
кажется, что команда .split
создала array
из 3 элементов:
href
/Something/Something_else?
Something
Мне нужен массив из 2 элементов:
href
/Something/Something_else?=Something
Из того, что я понимаю, если g
(глобальный) флаг не накладывается на шаблон регулярного выражения, он должен разделиться только после первого найденного появления знака =
(равно).
Можно ли использовать этот шаблон регулярного выражения /=/
вместо /=/g
чтобы достичь этого? или это должно быть сделано каким-то другим способом?
Вы можете использовать =(.*)
Как regexp и ограничить результаты, используя второй аргумент
var my_string = 'href=/Something/Something_else?=Something';
var parts = my_string.split(/=(.*)/, 2);
console.log(parts);
my_string.split(/=(.*)/, 2);
Вы можете найти первое сообщение =
и разделить строку самостоятельно.
const
my_string = 'href=/Something/Something_else?=Something',
firstEquals = my_string.indexOf('='),
parts = [
my_string.substr(0, firstEquals),
my_string.substr(firstEquals+1)
];
console.log(parts);
Используйте IndexOf(), затем разделите строку на 2:
var my_string = 'href=/Something/Something_else?=Something';
var index = my_string.indexOf('=');
var result = [my_string.substring(0, index), my_string.substring(index+1)]
console.log(result);
s.match(/^([^=]*)=([^]*)/)
а затем получить доступ к группе 1 и 2.g
всегда включен по умолчанию сsplit
.