2013-10-02 2 views
1

Предположим, что у 4-значного числа, такого как этот 1243, есть способ, используя регулярное выражение, выяснить, находятся ли цифры внутри номера в порядке возрастания порядка, например, это хорошее число «3579», когда «1243» не являетсяТест, если цифры находятся в порядке возрастания - регулярное выражение

+4

Зачем использовать ответ r выражение? – kojiro

+0

как насчет 1233? – Christophe

+0

Теперь мы можем четко видеть проблему с требованием решения регулярного выражения и неясным указанием вопроса. С того момента, когда я отправляю сообщение, у вас есть два хороших ответа, одно регулярное выражение, другое. Они дают * разные * результаты как для повторных цифр, так и для входов с не десятичными значениями. :) – kojiro

ответ

6

Вы можете использовать регулярное выражение как это:

^0*1*2*3*4*5*6*7*8*9*$ 

Пример:

var re = /^0*1*2*3*4*5*6*7*8*9*$/; 
alert(re.test('3579')); 
alert(re.test('1243')); 

Демо: http://jsfiddle.net/xYgpS/

+0

Вход: ''; Выход: true. ;) – kojiro

+2

@kojiro: Да, проверка длины ввода не входит в сферу действия вопроса. Он четко указывает, что входной сигнал составляет четыре цифры. – Guffa

+0

Итак, вы говорите, что поведение для недопустимого ввода не определено. Хорошо, но я говорю, что нужно отметить. : P – kojiro

2

Регулярное выражение является неправильным инструментом для задания. Ты гораздо лучше делать это с помощью простого цикла:

function isAscending(str) { 
    str = str.toString(); 

    for (var i = 0; i < str.length - 1; ++i) { 
     if (str[i] >= str[i + 1]) { 
      return false; 
     } 
    } 

    return true; 
} 
+0

Единственное, что я хотел бы предложить, - это обработать краевой регистр, где 'str' содержит нецелое число. – kojiro

+0

Немного различная реализация 'function isAscending (s) { var len = s.length; return [] .every.call (s, function (c, i) {return (++ i === len) || c plalx

0
var string="1234"; 
var orderedString=string.split("").sort().join(""); 
return (string==orderedString); 
+1

Вы можете просто «разбить» ('') '. – kojiro

+1

Право, очевидно, на меня повлиял вопрос и мне пришлось где-то ставить регулярное выражение :-) Ответ обновлен. – Christophe

Смежные вопросы