Я не получаю регулярные выражения

как ваш комментарий, я попытался, как показано ниже, в смонтированном методе (не создан). Осторожно nextTick требуется, когда элемент vue изменяется данными

new Vue({
 el: "#app",
 data: {
  checkoutplans : []
 },
 methods: {
   editModal : function(param) {
     console.log(param);
   }
 },
 mounted: function() {
   this.checkoutplans = [{id:1},{id:2}];
   this.$nextTick(() => {
   this.$el.querySelector("li.nav-item:first-child a").click();
   });
 }
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>
<div id="app">
<ul>
<li class="nav-item"  v-for="(checkoutplan, index) in checkoutplans" :key="checkoutplan.id">
     <a  class="nav-link" :class="{ 'active show' : index === 0 }" href="#settings" data-toggle="tab" @click="editModal(checkoutplan)">Checkout Plan {{index +1}}</a>
</li>
</ul>
</div>

Ваш код, кажется, щелкает первым li после вызова API! Таким образом, метод, который вы будете вызывать, - editModal({firstItem}). Как насчет вызова метода напрямую, не нажимая, как

axios.get("api/checkoutplan")
    .then(({ data }) => {this.checkoutplans = data;this.editModal(this.checkoutplans[0]) // direct call });

Созданный метод не готов к состоянию для элемента документа, поэтому вы не можете вызвать элемент документа в этом методе

9
задан 4 revs, 4 users 60% 16 March 2010 в 16:11
поделиться

12 ответов

Используйте их, где необходимо использовать/управлять шаблоны. Например, предположите, что необходимо распознать следующий шаблон:

  • Любая буква, A-Z, или верхний регистр или нижний регистр, 5 или 6 раз
  • 3 цифры
  • одна буква a-z (определенно нижний регистр)

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

Это не действительно трудно записать в коде - но это становится более твердым, как шаблон становится более сложным. С регулярным выражением Вы описываете шаблон (а не код, чтобы проверить его) и позволить regex механизму сделать работу для Вас.

Шаблон здесь был бы чем-то как

[A-Za-z]{5,6}[0-9]{3}[a-z]

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

Несколько оборотных сторон, хотя:

  • Regexes может стать сложным и твердым читать вполне быстро. Документ полностью!
  • Существуют вариации в поведении между различными regex механизмами
  • Сложность может быть трудно судить, не являетесь ли Вы экспертом (который я, конечно, нет!); существуют "глюки", которые могут заставить шаблоны действительно замедлиться против конкретного входа, и эти глюки не очевидны вообще
  • Некоторые люди злоупотребляют регулярные выражения в широком масштабе (и некоторый underuse их, конечно). Худший пример, который я видел, был то, где кто-то спросил (на группе C#), как проверить, была ли строка длиной 3 - это - ясно задание для использования Строки. Длина, но кто-то серьезно предложил соответствовать regex. Безумие. (Они также поняли превратно regex, который отчасти подтверждает точку зрения.)
  • Regexes используют обратные косые черты для выхода из различных вещей (например, использование. означать "точку", а не просто "любой символ". На многих языках самой обратной косой черте нужен выход.
30
ответ дан 4 December 2019 в 05:53
поделиться

Они выглядят немного загадочными, но они обеспечивают очень мощный инструмент для нахождения шаблонов в тексте. Что-либо от href теги в страницах HTML к проверке адресов электронной почты.

И они могут быть обработаны в очень эффективную структуру данных (FSA), который находит соответствия очень быстро.

4
ответ дан 4 December 2019 в 05:53
поделиться

Для чего используются регулярные выражения:

Регулярные выражения являются языком сам по себе, который позволяет Вам выполнять сложную проверку строковых исходных данных. Т.е. Вы передаете его строка, и это возвратит TRUE или FALSE, если это будет соответствие или нет.

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

  • Проверка формы, определите если, что вводимый пользователь имеет формат, который Вы хотите
  • Нахождение положения определенного шаблона в блоке текста
  • Поиск и замена, где критерий поиска является regex и что заменить, являются нормальной строкой.

Некоторые функции языка регулярных выражений:

  • Чередование: позволяет Вам выбирать одну вещь или другого. Соответствие в качестве примера только да или нет.

    yes|no

  • Группировка: можно определить объем и иметь приоритет с помощью круглых скобок. Например, соответствуйте 3 цветным оттенкам.

    gr (a|e) y|black|white

  • Квантификация: можно определить количество, сколько из чего-то Вы хотите.? средство 1 или 0, * означает 0 или больше. + означает по крайней мере один. Пример: Примите двоичную строку, которая не пуста:

    (0|1) +

Почему регулярные выражения?

Регулярные выражения помогают строкам совпадения, это может часто заменять несколько дюжин строк исходного кода с простой маленькой строкой регулярного выражения.

Не для всех типов соответствия:

Чтобы понять, как что-то полезно, необходимо также понять, как это не полезно. Регулярные выражения плохи для определенных задач, например, когда необходимо гарантировать, что строка имеет равное количество круглых скобок.

Доступный на примерно всех языках:

Регулярные выражения доступны на примерно любом языке программирования.

Формальный язык:

Любое регулярное выражение может быть преобразовано в детерминированный конечный автомат. И этим тем же способом можно выяснить, как сделать исходный код, который проверит регулярное выражение.

Пример:

[hc]+at 

соответствия "шляпа", "кошка", "hhat", "чат", "hcat", "ccchat", и так далее, но не "в"

Источник, дополнительные материалы для чтения

23
ответ дан 4 December 2019 в 05:53
поделиться

Их немного хитры, но чрезвычайно мощны и стоит изучить. Сеть полна учебного руководства и примеров, запустите, например, отсюда и посмотрите на примеры здесь.

3
ответ дан 4 December 2019 в 05:53
поделиться

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

Однако regexes очень полезны в хосте других ситуаций, извлекая IP-адреса из текста, теги от HTML и т.д. Нахождение всех имеющих версию файлов было бы другим примером. Что-то вроде:

my_versioned_file_(\d{4}-\d{2}-\d{2}).txt

будет соответствовать любым именам файлов формата my_versioned_file_2009-02-26.txt и вытащите дату как полученную группу (часть, перенесенная в" ()"), чтобы Вы далее проанализировали.

Никакие regexes не необходимы, но они могут спасти мир времени в записи скрученного вручную синтаксического анализатора для чего-то, чего regex может легко достигнуть.

1
ответ дан 4 December 2019 в 05:53
поделиться

Если я мог бы направить OP к некоторым ответам/комментариям один из моих собственных вопросов: Как важный знает Regexs?

3
ответ дан 4 December 2019 в 05:53
поделиться

Каждый раз, когда у Вас есть некоторый шаблон для нахождения в большом количестве текстовых данных или если Вы хотите проверить, что строка находится в определенном формате.

Например, адрес электронной почты...

Код для проверки в символе и присутствии допустимого домена будет выглядеть довольно большим, где Вы могли просто использовать регулярное выражение и иметь ответ в 2 строках кода.

Regex r = new Regex("<An Email Address Regex>");
bool isValidEmail = r.IsMatch(MyInput);

Другие примеры были бы для проверки, что числа находятся в правильном формате прежде, чем проанализировать их в целые числа и т.д.

0
ответ дан 4 December 2019 в 05:53
поделиться

Регулярные выражения являются очень кратким способом указать большую часть сопоставления с образцом и - заменяющие проблемы, и regexp механизмы могут быть очень высоко оптимизированы.

Если бы Вы хотели сделать то же задание даже как относительно простой regexp, то необходимо было бы написать много кода, который, вероятно, будет содержать много ошибок, будет тверд понять и работать плохо.

Принимая во внимание, что выполнение того же с regexp намного короче, почти наверняка работает, а также технически возможно, и легче понять любому знакомому с regexpes (хотя это должно быть прокомментировано в любом случае),

1
ответ дан 4 December 2019 в 05:53
поделиться

Некоторые практические использования реального мира:

Нахождение абстрактных классов, которые расширяют TestCase JUNIT:

abstract\s+class\s+\w+\s+extends\s+TestCase

Это полезно для нахождения тестовых сценариев, которые нельзя инстанцировать и будут нужны, исключая из сценария сборки муравья, который выполняет тестовые сценарии. Вы не можете искать обычный текст, потому что Вы не знаете имен классов заранее. следовательно \w + (По крайней мере один словесный символ).

Нахождение выполняющий удар или сценарии оболочки Bourne:

 ps -e | grep -e " sh| bash"

это полезно, если Вы хотите уничтожить их всех или что-то, если бы Вы сделали поиск просто sh, то Вы не получили бы удара и имели бы для выполнения команды снова для сценариев удара. Снова, более пригодный к эксплуатации, чем прекрасный, но почти никакой regex Вы пишете, на лету будет.

Это не прекрасно, но большая часть regexes не будет, или они займут много времени, чтобы записать, что они не стоят того. Те, которых Вы совершенствуете, являются теми, Вы фиксируете как какая-то часть проверки или созданного приложения.

0
ответ дан 4 December 2019 в 05:53
поделиться

Jon и Sqook дали прекрасное объяснение и определение Регулярных выражений, и для простых проблем довольно понятно, но если Вы используете его для сложных проблемных регулярных выражений, может быть a и $ ((, по крайней мере, для меня ;-))

Я использую Экспресс много, чтобы помочь мне создать сложный код регулярного выражения.

http://www.ultrapico.com/Expresso.htm

Это имеет сборку в библиотеке с выражениями, которые можно использовать, режим проектирования, где можно создать код и тестовый режим, где можно протестировать и проверить код. Это помогло мне создать и понять сложные выражения лучше!

Goodluck!

0
ответ дан 4 December 2019 в 05:53
поделиться

Дать Вам некоторые примеры:

  • Адрес электронной почты

  • Пароль требует по крайней мере 1 алфавита и 1 цифры

  • Как можно достигнуть этих требований?

  • Лучший способ состоит в том, чтобы использовать регулярное выражение.

Считайте следующие ссылки для узнавания больше:

Как к: используйте регулярные выражения для ограничения входа в ASP.NET http://msdn.microsoft.com/en-us/library/ms998267.aspx

0
ответ дан 4 December 2019 в 05:53
поделиться

Пример критического использования: JavaScript :
Если вам нужно выполнить поиск или заменить в строке, единственное соответствие, которое вы можете сделать, - это регулярное выражение. Это в JavaScript API для этих строковых методов ...

Лично я в основном использую регулярные выражения только тогда, когда мне нужно какое-то расширенное сопоставление в автоматическом поиске / замене в текстовом редакторе ( TextPad или Visual Studio ). На мой взгляд, самая мощная функция - это возможность сопоставить шаблон, который можно вставить в замену.

0
ответ дан 4 December 2019 в 05:53
поделиться
Другие вопросы по тегам:

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