15.07.2014, 21:14
|
Интересующийся
|
|
Регистрация: 10.06.2014
Сообщений: 18
|
|
Регулярное выражение для однозначных чисел
Добрый день.
Имеется строка вида:
1a5b23h)221
То есть между числами в случайном порядке располагаются буквы, символы и т.д.
Задача: найти все однозначные числа, т.е. 1, 2, 3, 4, 5, 6, 7, 8, 9 (можно без нуля).
Т.е. из примера выше нужно найти 1, 5.
Пробовал так:
/[0-9](?![0-9]))/
Но в таком случае находит 3 на конце 23 и 1 на конце 221.
|
|
15.07.2014, 21:23
|
|
Профессор
|
|
Регистрация: 22.03.2012
Сообщений: 3,744
|
|
Сообщение от madflash001
|
1a5b23h)221
То есть между числами в случайном порядке располагаются буквы, символы и т.д.
Задача: найти все однозначные числа, т.е. 1, 2, 3, 4, 5, 6, 7, 8, 9 (можно без нуля).
Т.е. из примера выше нужно найти 1, 5.
|
почему только 1 и 5, если задача найти все числа в строке?
|
|
15.07.2014, 21:30
|
Интересующийся
|
|
Регистрация: 10.06.2014
Сообщений: 18
|
|
Все однозначные числа, я же написал.
То есть 1 и 5 подходит, а 221 не подходит, т.к. это 3-х значное число.
|
|
15.07.2014, 21:32
|
|
Профессор
|
|
Регистрация: 22.03.2012
Сообщений: 3,744
|
|
Сообщение от madflash001
|
Все однозначные числа, я же написал.
|
почему только 1 и 5, если задача найти все однозначные числа в строке, в которой помимо 1 и 5, есть ещё 2 и 3?
|
|
15.07.2014, 21:37
|
Интересующийся
|
|
Регистрация: 10.06.2014
Сообщений: 18
|
|
2 и 3 стоят рядом друг с другом, поэтому это 2-х значное число 23, вот если бы было
2fgdf3fg
тогда бы эти числа подошли.
|
|
15.07.2014, 22:01
|
Интересующийся
|
|
Регистрация: 10.06.2014
Сообщений: 18
|
|
Примерно понял, какую регулярку нужно написать. Но теперь возник такой вопрос:
Есть спецсимвол x(?!y), он находит х, если за ним не следует у, а есть ли спецсимвол, который находит х, если ПЕРЕД ним не следует у?
Что - то в Интернете только x(?!y) есть.
|
|
15.07.2014, 22:14
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,109
|
|
madflash001,
var str = '1a5b23h)221';
alert(str.replace(/\d{2,}/g,'').match(/\d/g))
|
|
15.07.2014, 22:27
|
Интересующийся
|
|
Регистрация: 10.06.2014
Сообщений: 18
|
|
Хм... Интересный подход. Правда, наверное, не самый быстрый. Одной регуляркой было бы быстрее, а у меня строка очень большая.
Но, в любом случае, спасибо большое. Сам бы не додумался.
|
|
15.07.2014, 23:41
|
|
Профессор
|
|
Регистрация: 23.06.2011
Сообщений: 1,165
|
|
alert('1a5b23h)221'.split(/\D+/).filter(function(el){return el.length == 1}))
|
|
|
|