Попрактиковавшись в этом, я напишу обычный

регулярное выражение
Попрактиковавшись в этом, я напишу обычный

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

Во-первых, мы используем обычный, чтобы сделать всю подсказку列表可以不记,但练习一定要做

\w[-\w.+]*@([A-Za-z0-9][-A-Za-z0-9]+.)+[A-Za-z]{2,14}

Онлайн-инструмент для обнаружения закономерностей(Может генерировать код для регулярного сопоставления на разных языках)


грамматика

метасимвол

🌰:\w[-\w.+]*@([A-Za-z0-9][-A-Za-z0-9]+.)+[A-Za-z]{2,14}

\w означает匹配字母、数字、下划线
Это метасимвол, а другие метасимволы:

персонаж описывать
\d Совпадение с числовым символом. Эквивалент [0-9].
\D Соответствует нечисловому символу. Эквивалент [^0-9].
\w Сопоставьте буквы, цифры, символы подчеркивания. Эквивалент '[A-Za-z0-9_]'
\W Соответствует небуквам, цифрам, знакам подчеркивания. Эквивалент '[^A-Za-z0-9_]'
\s соответствует любому пробельному символу, включая пробелы, табуляции, каналы формы
\S соответствует любому непробельному символу. Эквивалент [^ \f\n\r\t\v]
. Соответствует любому одиночному символу, кроме символа новой строки (\n, \r). Чтобы соответствовать любому символу, включая '\n', используйте что-то вроде "(.
\f Соответствует символу перевода формы.
\n Соответствует символу новой строки.
\r Соответствует возврату каретки.
\t Соответствует символу табуляции.
\v Соответствует символу вертикальной табуляции.
^ Соответствует тому месту, где начинается входная строка.
$ Соответствует позиции в конце входной строки
\b Соответствует границе слова, то есть положению между словом и пробелом. Например, «er\b» может соответствовать «er» в «никогда», но не «er» в «глаголе».
\B В отличие от \b: er\B' соответствует 'er' в слове "глагол", но не соответствует 'er' в слове "никогда".

С метасимволами мы можем практиковать простое сопоставление

1. Соедините слова, оканчивающиеся на ing

ing\b

2. Сопоставьте 11-значный китайский номер телефона:

1\d\d\d\d\d\d\d\d\d\d


интервал

🌰: \ш[-\w.+]*@([A-Za-z0-9][-A-Za-z0-9]+.)+[A-Za-z]{2,14}

[-\w.+] интервал, указывающий匹配符号 -,或字母、数字、下划线,或符号 . ,或符号 +
Другие распространенные варианты использования включают:

персонаж описывать
[0-9] соответствует числам от 0 до 9
[A-Z] Сопоставьте буквы между A-Z, также можно комбинировать [A-Za-z0-9]


квалификатор

🌰: \w[-\w.+]*@([A-Za-z0-9][-A-Za-z0-9]+.)+[A-Za-z]{2,14}

*указывает на вхождение, соответствует前面的子表达式零次或多次. Например, zo* соответствует как «z», так и «zoo».
Другие квалификаторы:

персонаж описывать
* Соответствует предыдущему подвыражению ноль или более раз. Например, zo* соответствует как «z», так и «zoo». * эквивалентно {0,}
+ Соответствует предыдущему подвыражению один или несколько раз. Например, «zo+» соответствует «zo» и «zoo», но не «z». + эквивалентно {1,}
? Соответствует предыдущему подвыражению ноль или один раз. Например, «do(es)?» соответствует «do», «does» в «does» и «do» в «doxy». ? эквивалентно {0,1}
{n} n — целое неотрицательное число. Совпадение определенное количество n раз. Например, "о{2}" не соответствует "о" в слове "Боб", но соответствует двум "о" в слове "еда".
{n,} n — целое неотрицательное число. Совпадение не менее n раз. Например, "o{2,}" не будет соответствовать "o" в "Bob", но будет соответствовать всем "o" в "foooood". «о{1,}» эквивалентно «о+». 'о{0,}' эквивалентно 'о*'
{n,m} И m, и n — неотрицательные целые числа, где n

С интервалами, определителями, комбинированными метасимволами

1. Совпадение с 9-значным почтовым ящиком QQ:

[0-9]{9}@qq.com

2. Идентификационный номер:

\d{17}[0-9Xx]|\d{15}

3. IP-адрес:

\d{0,3}\.\d{0,3}\.\d{0,3}\.\d{0,3}


обычные символы и побеги

🌰: \w[-\w.+]*@([A-Za-z0-9][-A-Za-z0-9]+\.)+[A-Za-z]{2,14}

@ — это обычный символ, обозначающий то, что должно появиться. Например: совпадающее доменное имяjuejin.cn, ты можешь использовать

https://juejin.cn

Но из-за обозначения/,.,(,)И т. д. является специальным символом в обычном, поэтому вам нужно использовать escape-символ\побег

https:\/\/juejin\.im


учиться здесь

Узнайте здесь. В сочетании с онлайн-инструментами обнаружения он может удовлетворить основные потребности работы

Онлайн-инструмент для обнаружения закономерностей(Может генерировать обычные совпадающие коды на разных языках)


Далее мы поговорим о важных концепциях регуляризации.

подвыражение

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

Пример var reg=/(\d)([az]*)/gi

  • (\d) - первое подвыражение
  • ([a-z]) — второе подвыражение


Захват и дезахват

Содержимое, совпадающее с несколькими подвыражениями, появляется в буфере в памяти по порядку.捕获数组, который мы называем захватом

Пример var reg=/(\d)([az]*)/gi соответствует 1adkk

Подтвердить с помощью js-кода:/(\d)([a-z]*)/gi

<script>
    var str = '1adkk';
    var reg=/(\d)([a-z]*)/gi
    if(reg.test(str)) {
                console.log( RegExp.$1 );
                console.log( RegExp.$2 );
                console.log( RegExp.$3 );
    }
</script>

输出结果:
1               index.html:16
adkk            index.html:17 
                index.html:18 

Антизахват - это противоположность захвату, отметьте то, что не нужно захватывать

Подтвердить с помощью js-кода:/(?:\d)([a-z]*)/gi

<script>
    var str = '1adkk';
    var reg=/(?:\d)([a-z]*)/gi    if(reg.test(str)) {
                console.log( RegExp.$1 );
                console.log( RegExp.$2 );
                console.log( RegExp.$3 );
    }
</script>

输出结果:
adkk            index.html:16
                index.html:17 
                index.html:18 


обратная ссылка

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

var str="1adkk" var reg=/(\d)([a-z])/gi

Поместите результат 1, соответствующий (\d), в буфер => ссылка $1

поместить ([a-z]) соответствующее содержимое a в буфер => ссылка $2

Подтвердить с помощью js-кода:

    var str = '1adkk';
    var reg = /(\d)([a-z]*)/gi;

    var result = str.replace(reg, "$2$2");
    console.log(result);
    
输出结果:  
    adkkadkk


жадный

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

Например:

    var str = '1adkk adkkk adkkkk';
    var reg = /([a-z]){4,6}/gi;

    var result = str.match(reg);
    console.log(result);
    
输出结果:  
    0: "adkk"
    1: "adkkk"
    2: "adkkkk"

Из результата мы знаем: «1adkk adkkk adkkkk», на самом деле для успешного совпадения нужно всего 4 буквы, но оно не выполняется, а сопоставляется максимальное количество совпадающих символов, а это 6. Квантификатор такой жадный


ленивый / нежадный

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

Ленивый квантификатор — это жадный квантификатор, за которым следует?

код инструкция
*? Повторяйте как можно больше раз
+? Повторяйте один раз, много раз, но как можно реже
?? Повторяйте 0, 1, но как можно реже
{n,m}? Повторить n~m раз, но как можно меньше
{n,}? Повторить более n раз, но как можно реже
    var str = '1adkk adkkk adkkkk';
    var reg = /(\w{3,4}?)/gi;

    var result = str.match(reg);
    console.log(result);
输出结果:
    0: "1ad"
    1: "adk"
    2: "adk"
    3: "kkk"    


Оригинальность непроста, если моя статья была вам полезна, ставьте лайк и поощряйте

Ссылка на официальный аккаунт:Попрактиковавшись в этом, я напишу обычный