Регулярное выражение — это текстовый шаблон, который использует одну строку для описания и сопоставления ряда строк, соответствующих синтаксическому правилу. Это громоздко и мощно, и почти все языки программирования поддерживают манипуляции со строками с помощью регулярных выражений. Учись усердно и работай. При некоторой отсылке при подаче заявки освоить регулярные выражения не проблема.
Во-первых, мы используем обычный, чтобы сделать всю подсказку列表可以不记,但练习一定要做
\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"
Оригинальность непроста, если моя статья была вам полезна, ставьте лайк и поощряйте
Ссылка на официальный аккаунт:Попрактиковавшись в этом, я напишу обычный