Помогите правильно написать регулярное выражение
На вход:
от 2000 до 3000 до 2000 от 5000 На выходе: 2000 3000 2000 5000 То есть, если строка от 2000 до 3000, то нужно получить два числа в разных переменных. Если до 2000, то надо число в переменную, но понимать при этом что было до. Если от 5000, то число в переменную, но понимать при этом, что от. Вот такое в первом случае работает: /(от [0-9]+ до [0-9]+)/ Вот такое /(от [0-9]+)/ работает и в первом случае и третьем, а нужно чтоб только в третьем сработало. Как это сделать? |
var x = "от 2000 до 3000".split(" "); //так не проще? alert( x.join("\n") ); |
Действительно проще) Спасибо!
|
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' ); } |
Цитата:
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(" тут твоя строка") |
Часовой пояс GMT +3, время: 01:32. |