Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 14.02.2012, 11:28
Новичок на форуме
Отправить личное сообщение для fredrsf Посмотреть профиль Найти все сообщения от fredrsf
 
Регистрация: 30.06.2010
Сообщений: 9

Помогите правильно написать регулярное выражение
На вход:
от 2000 до 3000
до 2000
от 5000
На выходе:
2000 3000
2000
5000

То есть, если строка от 2000 до 3000, то нужно получить два числа в разных переменных. Если до 2000, то надо число в переменную, но понимать при этом что было до. Если от 5000, то число в переменную, но понимать при этом, что от.

Вот такое в первом случае работает: /(от [0-9]+ до [0-9]+)/
Вот такое /(от [0-9]+)/ работает и в первом случае и третьем, а нужно чтоб только в третьем сработало. Как это сделать?
Ответить с цитированием
  #2 (permalink)  
Старый 14.02.2012, 11:43
Аватар для nerv_
junior
Отправить личное сообщение для nerv_ Посмотреть профиль Найти все сообщения от nerv_
 
Регистрация: 29.11.2011
Сообщений: 3,924

var x = "от 2000 до 3000".split(" "); //так не проще?
alert( x.join("\n") );
__________________
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
Ответить с цитированием
  #3 (permalink)  
Старый 14.02.2012, 12:10
Новичок на форуме
Отправить личное сообщение для fredrsf Посмотреть профиль Найти все сообщения от fredrsf
 
Регистрация: 30.06.2010
Сообщений: 9

Действительно проще) Спасибо!
Ответить с цитированием
  #4 (permalink)  
Старый 14.02.2012, 12:17
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

var re = /^(?:от (2[0-9]{3}) до (2[0-9]{3}|3000))?(?:от ([5-9][0-9]{3}|[0-9]{5,})$)?(?:до (1[0-9]{3}|2000|[0-9]{1,3})$)?/;

var m = re.exec( 'до 200' );

if ( m[1] && m[2] ) {
    alert( 'from ' + m[1] + ' to ' + m[2] );
} else if ( m[3] ) {
    alert( 'from ' + m[3] );
} else if ( m[4] ) {
    alert( 'to ' + m[4] );
} else {
    alert( 'Unknown matching' );
}
Ответить с цитированием
  #5 (permalink)  
Старый 14.02.2012, 13:30
Профессор
Посмотреть профиль Найти все сообщения от Mахmахmахimus
 
Регистрация: 10.02.2012
Сообщений: 254

Сообщение от fredrsf
Вот такое /(от [0-9]+)/ работает и в первом случае и третьем, а нужно чтоб только в третьем сработало.
условиями if это делается


var regAll = /от\s\d+\sдо\s\d+/;
var regFtom = /от\s\d+/;
var regTo = /до\s\d+/;

function test(string) {

	all = '';
	from = '';
	to = '';

	if (regAll.test(string)) {
		all = string;
	} else if (regFtom.test(string)) {
		from = string;
	} else if (regTo.test(string)) {
		to = string;
	}

}

test(" тут твоя строка")

Последний раз редактировалось Mахmахmахimus, 14.02.2012 в 13:38.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите составить регулярное выражение для числа с плавающей точкой boomrest Общие вопросы Javascript 4 25.02.2015 11:17
Как написать регулярное выражение для поиска до конца строки isqad88 Общие вопросы Javascript 3 11.02.2012 14:34
Помогите написать регулярное выражение! Dorian_bs Общие вопросы Javascript 7 09.12.2011 08:12
регулярное выражение, помогите serhanters jQuery 2 12.07.2011 10:14
как правильно написать регулярное выражение? Lucius Общие вопросы Javascript 5 17.04.2011 16:34