Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Регулярка: найти до первого нужного символа-разделителя (https://javascript.ru/forum/misc/36605-regulyarka-najjti-do-pervogo-nuzhnogo-simvola-razdelitelya.html)

Andrej_N 21.03.2013 13:38

Регулярка: найти до первого нужного символа-разделителя
 
Здравствуйте!

Не поможете с наводкой, а то я чувствую, что не в ту степь полез и должно существовать простое решение.

Есть, к примеру, некая переменная, в которой хранятся некоторые данные (любого типа) с разделитем, скажем, в виде тире:

nabor='1a-2a-3a-4a';

Нужно из этой переменной взять первое значение, т.е. все что до первого тире, т.е. "1a".

Пытаюсь сделать это регуляркой, но находит все что до последнего тире, т.е. "1a-2a-3a". В чем ошибка?

<html>
<body>
<script>
nabor='1a-2a-3a-4a';
pervoe_znatshenie=nabor.replace(/(.{1,})-.{1,}/, '$1');//-Нахожу 1 и более повторений любого символа до последнего тире (.{1,}) -- их и забираю, а потом вывожу через $1, после которого идет все что угодно .{1,}

alert (' nabor='+nabor+'\n pervoe_znatshenie='+pervoe_znatshenie);

</script>
</body>
</html>


И еще вопрос, можно ли как-то регуляркой считать нужные символы, чтобы, к примеру, можно было найти все что между вторым и третьим тире,
т.е. "3a"?

Пожалуйста, направьте на правильный путь!

Vasy 21.03.2013 13:51

Я не совсем хорошо прогаю и все знаю,но если я все правильн опомню то
$` Вставляет часть строки, которая предшествует найденному вхождению.
Что оно собственно вам и делает

рони 21.03.2013 13:52

Andrej_N,
var nabor='1a-2a-3a-4a';
alert(nabor.split("-")[1])

Andrej_N 21.03.2013 14:05

Рони, спасибо!

Это то, что нужно, а я полез в какие-то дебри.

danik.js 21.03.2013 14:48

Andrej_N,
А зачем писать транслитом? Тогда уж так:
String.prototype.разбить = String.prototype.split;
delete String.prototype.split;
Window.prototype.тревога = Window.prototype.alert;
delete Window.prototype.alert;

var набор ='1a-2a-3a-4a';
тревога(набор.разбить("-")[1])

рони 21.03.2013 15:01

Цитата:

Сообщение от danik.js
А зачем писать транслитом?

а почему нельзя писать транслитом?

danik.js 21.03.2013 15:10

Цитата:

Сообщение от рони
а почему нельзя писать транслитом?

Кто так сказал? Я же спросил:
Цитата:

Сообщение от danik.js
А зачем писать транслитом?


dmitriymar 21.03.2013 15:18

Цитата:

Сообщение от danik.js
Andrej_N,
А зачем писать транслитом? Тогда уж так:
1 String.prototype.разбить = String.prototype.split;
2 delete String.prototype.split;
3 Window.prototype.тревога = Window.prototype.alert;
4 delete Window.prototype.alert;
5
6 var набор ='1a-2a-3a-4a';
7 тревога(набор.разбить("-")[1])

и вариант хуже чем транслит , при условии что при написании разных участков использовались разные локали :) выглядит один в один а коды разные..
а называния , ну если в окружающей его среде принят транслит -ничего плохого нет, наоборот былобы не приемлимо если бы все писали транслитом а он нет

danik.js 21.03.2013 15:27

Кто не понял. Я предложил вариант смеха ради )
А вобще траслит меня раздражает. Решил стать прогером - будь добр учи английский. Всеравно придется ведь (1C'ников это не касается :) )

Andrej_N 21.03.2013 17:11

danik.js, не знал даже, что такое возможно.

Дело в том, что я не программист, а самоучка-любитель. И сколько помню, всегда пишу переменные в отладочном коде транслитом или по-немецки, заменяя умлауты. Потом, когда оптимизирую, названия переменных и массивов сокращаю вплоть до одной буквы. Уж такая тактика.

Еще один закидон: все пишу на Perl под домашним Аппачем (Денвер), включая JS :) При этом обильно комментирую и разбиваю код на части, в итоге же для заливки на сервер генерируется код JS без комментариев, максимально оптимизированный и в одну строку.

Вот до чего доводит незнание английского (к сожалению, знаю только немецкий, но в совершенстве и даже учился в Германии). Запоминаю все в немецкой транскрипции :). Это я все к тому, чтобы кто-нибудь из молодых прочитал и понял, что чтобы быть программистом, желательно сначала изучить английский -- здесь вы абсолютно правы.


Часовой пояс GMT +3, время: 07:44.