Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Регулярное выражение для однозначных чисел (https://javascript.ru/forum/misc/48758-regulyarnoe-vyrazhenie-dlya-odnoznachnykh-chisel.html)

madflash001 15.07.2014 21:14

Регулярное выражение для однозначных чисел
 
Добрый день.
Имеется строка вида:
1a5b23h)221

То есть между числами в случайном порядке располагаются буквы, символы и т.д.
Задача: найти все однозначные числа, т.е. 1, 2, 3, 4, 5, 6, 7, 8, 9 (можно без нуля).
Т.е. из примера выше нужно найти 1, 5.
Пробовал так:
/[0-9](?![0-9]))/

Но в таком случае находит 3 на конце 23 и 1 на конце 221.

bes 15.07.2014 21:23

Цитата:

Сообщение от madflash001
1a5b23h)221

То есть между числами в случайном порядке располагаются буквы, символы и т.д.
Задача: найти все однозначные числа, т.е. 1, 2, 3, 4, 5, 6, 7, 8, 9 (можно без нуля).
Т.е. из примера выше нужно найти 1, 5.

почему только 1 и 5, если задача найти все числа в строке?

madflash001 15.07.2014 21:30

Все однозначные числа, я же написал.
То есть 1 и 5 подходит, а 221 не подходит, т.к. это 3-х значное число.

bes 15.07.2014 21:32

Цитата:

Сообщение от madflash001
Все однозначные числа, я же написал.

почему только 1 и 5, если задача найти все однозначные числа в строке, в которой помимо 1 и 5, есть ещё 2 и 3?

madflash001 15.07.2014 21:37

2 и 3 стоят рядом друг с другом, поэтому это 2-х значное число 23, вот если бы было
2fgdf3fg
тогда бы эти числа подошли.

madflash001 15.07.2014 22:01

Примерно понял, какую регулярку нужно написать. Но теперь возник такой вопрос:
Есть спецсимвол x(?!y), он находит х, если за ним не следует у, а есть ли спецсимвол, который находит х, если ПЕРЕД ним не следует у?
Что - то в Интернете только x(?!y) есть.

рони 15.07.2014 22:14

madflash001,
:-?
var str = '1a5b23h)221';
 alert(str.replace(/\d{2,}/g,'').match(/\d/g))

madflash001 15.07.2014 22:27

Хм... Интересный подход. Правда, наверное, не самый быстрый. Одной регуляркой было бы быстрее, а у меня строка очень большая.
Но, в любом случае, спасибо большое. Сам бы не додумался.

BETEPAH 15.07.2014 23:41

alert('1a5b23h)221'.split(/\D+/).filter(function(el){return el.length == 1}))


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