Java Regex, чтобы получить список чисел, которые больше, чем постоянное значение say & ldquo; 345678 & rdquo; [Дубликат]

Самое простое решение - создать функцию JavaScript и вызвать его для обратного вызова Ajax success.

function callServerAsync(){
    $.ajax({
        url: '...',
        success: function(response) {

            successCallback(response);
        }
    });
}

function successCallback(responseObj){
    // Do something like read the response and show data
    alert(JSON.stringify(responseObj)); // Only applicable to JSON response
}

function foo(callback) {

    $.ajax({
        url: '...',
        success: function(response) {
           return callback(null, response);
        }
    });
}

var result = foo(function(err, result){
          if (!err)
           console.log(result);    
}); 
4
задан Alan Moore 3 May 2015 в 09:01
поделиться

6 ответов

Немного длинный, но рассчитанный на наличие только одного возможного пути для каждой цифры (для быстрого сбоя):

^(?:
[1-8][0-9]{3,}
|
9 (?:
      [0-4][0-9]{2,}   
    |
      [6-9][0-9]+     
    |
      5 (?:
            [5-9][0-9]*
          |
            [0-4][0-9]+
        )
  )
)$

Обратите внимание, что ветви сортируются по вероятности.

Сжатый:

^(?:[1-8][0-9]{3,}|9(?:[0-4][0-9]{2,}|[6-9][0-9]+|5(?:[5-9][0-9]*|[0-4][0-9]+)))$

Примечание: выполнение этого шаблона регулярного выражения в большинстве случаев является неуместным и сложным (регулярное выражение не предназначено для решения арифметических задач). Поэтому, если вы можете, введите свою строку в целое число и протестируйте ее с помощью простого сравнения.

2
ответ дан Casimir et Hippolyte 5 September 2018 в 08:12
поделиться

\b(?<!\.)0*(?:[1-9]\d{3,}|9(?:[6-9]\d|5[5-9]))(?:\.\d+)?\b

Эта строка будет соответствовать ведущим нулям и десятичным знакам, но только если все значение превышает 954. Таким образом, оно будет соответствовать 955.62 и 0001253.125, но не 00954.999 или 125.967. regex101

Чтобы разбить его:

(?<!\.) говорит, что он не соответствует, если есть период непосредственно перед номером. Это необходимо, чтобы избежать совпадения таких вещей, как 0.957.

e2: 0* был добавлен, чтобы выполнить полное совпадение с ведущими нулями

(?:[1-9]\d{3,}|9(?:[6-9]\d|5[5-9])) устанавливает соответствие для всего существенного слева от десятичной точки. [1-9]\d{3,} соответствует любому числу, равному или превышающему 1000. Другая сторона | (или оператор), 9(?:[6-9]\d|5[5-9]) соответствует любым числам в 900s с другим или вложенным внутри. Внутренний или будет соответствовать, когда десятки и цифры - 60-99 или 55-59.

(?:\.\d+)? - это оператор, который соответствует десятичным знакам. ? в конце делает его необязательным, чтобы он соответствовал числам, которые не имеют десятичных точек в них.

e2: регулярное выражение было завернуто в \b s, чтобы убедиться, что это его собственное слово. Регулярное выражение больше не будет соответствовать so1337, the769s или 960things.

EDIT1: Забыл сделать мой. Литерал.

EDIT2: внесенные изменения, отмеченные знаком «e2:»

0
ответ дан Eric Ed Lohmar 5 September 2018 в 08:12
поделиться

Я не использовал бы регулярное выражение для этого, так как вы попадете в уродливые цепочки шаблонов.

Однако, если все еще нужно или нужно использовать его, вы можете использовать регулярное выражение, подобное этому:

[1-9]\d{3,}|9[6-9]\d|9[5-9]{2}

Рабочая демонстрация

Regular expression visualization [/g1]

Идея этого регулярного выражения такова:

[1-9]\d{3,}   --> This will match 4 or more digit numbers
9[6-9]\d      --> This will match numbers between 960 to 999
9[5-9]{2}     --> This will match numbers between 955 to 999
                  you could write this pattern as `95[5-9]` to cover 
                  numbers from 955 to 959 if you wish (it's up to you)
16
ответ дан Federico Piazza 5 September 2018 в 08:12
поделиться

Вы можете использовать следующее:

95[5-9]|9[6-9]\d|[1-9]\d{3,}

Объяснение:

  • 95[5-9] соответствует 955-959
  • 9[6-9]\d соответствует из 960-999
  • [1-9]\d{3,} соответствует > 1000
2
ответ дан karthik manchala 5 September 2018 в 08:12
поделиться

Здесь это:

([1-9]\d{3,}|9[6-9]\d|95[5-9])

См. в действии на regex101 .

И хорошая диаграмма:

regex diagram [/g1]

2
ответ дан Umberto Raimondi 5 September 2018 в 08:12
поделиться

Я пытался проанализировать файл журнала приложений времен работы базы данных, захваченных для определенных запросов. Время записывается в миллисекундах (например, DatabaseTime = 12035 ~ Время в базе данных = ~ 12 секунд). Для дальнейшего уточнения мне нужно было найти случаи, когда пользовательский интерфейс приложения истекал через 120 секунд (т. Е. DatabaseTime> 120000), поэтому я мог фиксировать отметки времени на этой же строке.

Вот что я придумал для шаблона RegEx:

[1-9][2-9][0-9]\d{3,}|[1-9]\d{6,}

Многие из вас здесь являются экспертами по регулярному выражению, чтобы разбить это на уме, но для тех, кто aren 't, я проверил это на regex101.com, который также показывает разбивку регулярного выражения для вас: https://regex101.com/r/hG2iU7/28

Некоторые мысли / соображения по этому вопросу (опять-таки полностью соответствующие первому вопросу):

  • Я чувствую, что я принял очень минималистский подход к этому, однако он, похоже, удовлетворил прецедент , что потребовало от меня поиска в журналах в NotePad ++ с использованием опции поиска RegEx.
  • Я согласен, что Regex не является решением для имитации таких числовых операций (что в противном случае было бы лучше сделать с использованием регулярного выражения в сочетании с язык программирования / сценариев), но я должен сказать вам, если вам нужно быстро выполнить поиск в файле журнала в текстовом редакторе, таком как NotePad ++, и у вас нет терпения или клиентских привилегий для создания какого-то довольно кода или установить плагин Python, регулярное выражение может быть вашим единственным быстрым (и, предположительно, GREEDY) вариантом, и, если это так, это вполне полезный сценарий, который нужно знать на рабочем месте.

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

1
ответ дан ViceKnightTA 5 September 2018 в 08:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: