Create by jsliang on 2018-11-14 10:41:20
Recently revised in 2018-11-19 09:04:18
Привет друзья, если вы считаете, что эта статья неплохая, не забудьте датьstar, ВашstarЭто моя мотивация учиться!Адрес GitHub
【2019-08-16】Привет друзья, потому чтоjsliangБиблиотека документации подверглась рефакторингу, некоторые ссылки на эту статью могут быть битыми, иjsliangУ меня нет сил поддерживать старые статьи на стороне Nuggets, извините за это. Для тех, кому нужно получать последние статьи, щелкните адрес GitHub выше и перейдите в библиотеку документов, чтобы просмотреть скорректированные статьи.
Регулярные выражения. Регулярные выражения, также известные как правила, позволяют компьютерам читать человеческие правила.
Регулярные выражения громоздки, и чем больше вы их изучаете, тем более сумасшедшим вы себя чувствуете.
Но опять же, это мощно. В моих глазах обычный — это чит-код, а приложение после изучения может сильно повысить эффективность вашей разработки.
Итак, вы можете честно сражаться с монстрами, но вам будет удобнее программировать, когда вы его используете.
Подводя итог,jsliangЯ написал эту статью, чтобы задокументировать свой импульс к обучению.
С этой целью это также вдохновляет,jsliangНаписал мини-игру для ПК (пожалуйста, используйте компьютер, чтобы открыть сайт):
каталог
В чем разница между передней частью, которая не подбрасывается, и соленой рыбой~
Две интеграции
В этой главе систематизированы и обобщены все ссылки для быстрого просмотра и использования в будущем.
Если вы еще не знакомы с регулярными выражениями, бегло просмотрите и пропустите эту главу.
Избранные справочники/видео/руководства:
- Регулярные выражения - Учебник | Учебник для начинающих
- Онлайн-тестирование регулярных выражений | Учебник для новичков
- Руководство по регулярным выражениям | Китайское сообщество с открытым исходным кодом
- Волшебные регулярные выражения | МООК
- Регулярных выражений на самом деле 6, к сожалению, вы не можете писать | начало интерфейса
- Регулярные выражения — краткий справочник |Microsoft Docs
- Демистификация регулярных выражений | Regular Studio
- Регулярные выражения JavaScript | MDN
2.1 Общие регулярные выражения
- Проверить имя
- От 2 до 9 китайских прозвищ:
^[\u4e00-\u9fa5]{2,9}$
- подтвердите пароль
- Это могут быть только буквы, цифры и символы подчеркивания, а длина не ограничена:
^\w+$
- разрешены строчные буквы
a-z
,прописная букваA-Z
,номер0-9
, подчеркивать_
, Столяр-
, а длина составляет от 6 до 18 цифр:/^[a-zA-Z0-9_-]{6,18}$/
- Пароль должен содержать цифры + строчные буквы + прописные буквы, а длина — от 8 до 10 символов:
^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,10}$
- подтвердить электронную почту
- Допускается символ, соответствующий [A-Za-z0-9_], за которым следует [A-Za-z0-9_-+.] +
@
+ Разрешить соответствие символа [A-Za-z0-9_], за которым следует [A-Za-z0-9_-.] +.
+ Допускается почтовый ящик, который может иметь [A-Za-z0-9_-.] после символа, соответствующего [A-Za-z0-9_]:^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$
- Подтвердить идентификатор
- 18-значный идентификационный номер, мантисса — это число или буква X:
^(\d{6})(\d{4})(\d{2})(\d{2})(\d{3})([0-9]|X)$
- 15- или 18-значный идентификационный номер, мантисса может быть числом и X или x:
(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)
- Подтвердить номер телефона
- 11-значный номер мобильного телефона, начинающийся с 1 и второй цифрой 3/4/5/7/8:
^1[3,4,5,7,8,9]\d{9}$
- Мобильный номер:
^134[0-8]\d{7}$|^(?:13[5-9]|147|15[0-27-9]|178|1703|1705|1706|18[2-478])\d{7,8}$
- Тел:
^(?:133|153|1700|1701|1702|177|173|18[019])\d{7,8}$
- Юником номер:
^(?:13[0-2]|145|15[56]|176|1704|1707|1708|1709|171|18[56])\d{7,8}|$
2.2 Правила сопоставления
персонаж | описывать | пример |
---|---|---|
\ |
Помечает следующий символ как специальный символ, буквенный символ, обратную ссылку или восьмеричный escape-символ. |
\n представляет новую строку,\d соответствует числам от [0-9] |
^ |
Соответствует начальной позиции входной строки. |
^abc Указывает совпадающие строки, начинающиеся с abc |
$ |
Соответствует концу входной строки. |
^\d$ означает совпадение с числом [0-9] |
* |
Соответствует предыдущему подвыражению ноль или более раз. |
zo* может соответствоватьz илиzoo .* Эквивалентно{0,} . |
+ |
Соответствует предыдущему подвыражению один или несколько раз. |
zo+ может соответствоватьzo илиzoo , но не совпадаетz .+ Эквивалентно{1,} . |
? |
Соответствует предыдущему подвыражению ноль или один раз. |
do(es)? может соответствоватьdoes илиdoes серединаdo .? Эквивалентно{0,1} . |
{n} |
n является неотрицательным целым числом. Совпадение определенное количество n раз. |
o{2} не может соответствоватьBob серединаo , но совпадаетfood два изo . |
{n,} |
n является неотрицательным целым числом. Совпадение не менее n раз. |
o{2,} не может соответствоватьBob серединаo , но совпадаетfoooood все вo .o{1,} Эквивалентноo+ .o{0,} эквивалентноo* . |
{n,m} |
И m, и n — неотрицательные целые числа, где n | Например,o{1,3} будет соответствоватьfooooood Первые три о в .o{0,1} Эквивалентноo? . Обратите внимание, что между запятой и двумя числами не должно быть пробелов. |
? |
когда персонаж сразу следует за любым другим квалификатором* ,+ ,? ,{n} ,{n,} ,{n,m} позже (напр.+? ), соответствующий шаблон не является жадным. Нежадный режим соответствует как можно меньшей части искомой строки, в то время как жадный режим по умолчанию соответствует максимально возможной части искомой строки. |
для струнoooo ,o+? будет соответствовать одномуo ,иo+ будет соответствовать всемo . |
. |
совпадение, кроме\n любой одиночный символ, кроме .. очень мощныйметасимволы, пожалуйста, используйте с осторожностью. |
Включить\n любой символ, пожалуйста, используйте(.|\n) режим. Чтобы соответствовать самой десятичной точке, используйте\. .a.e может соответствоватьnave серединаave или совпадениеwater серединаate
|
(子表达式) |
Отмечает начало и конец подвыражения. |
(\w)\1 может соответствоватьdeep серединаee
|
(?:子表达式) |
совпадениеz подвыражениеНо результат совпадения не извлекается, что означает, что это совпадение без выборки и не сохраняется для последующего использования. Это использование символа или(|) Полезно комбинировать части узора. |
industr(?:y|ies) является эквивалентомindustry|industries Но более сокращенные регулярные выражения. |
(?=子表达式) |
Общее использование:××(?=子表达式) , это значит×× Последние условные ограничения?= Назад子表达式
|
Windows(?=95|98|NT|2000) может соответствоватьWindows2000 серединаWindows , но не совпадаетWindows3.1 серединаWindows .\w+(?=\.) может соответствоватьHe is. The dog ran. The sun is out. серединаis ,ran иout
|
(?!子表达式) |
похожий на(?=子表达式) , что указывает на то, что он не равен следующему子表达式 . |
Windows(?!95|98|NT|2000) может соответствоватьWindows3.1 серединаWindows , но не совпадаетWindows2000 серединаWindows .\b(?!un)\w+\b может соответствоватьunsure sure unity used серединаsure иused
|
(?<=子表达式) |
То же. |
(?<=95|98|NT|2000)Windows может соответствовать2000Windows серединаWindows , но не совпадает3.1Windows серединаWindows .(?<=19)\d{2}\b может соответствовать1851 1999 1950 1905 2003 середина99 ,50 и05
|
(?<!子表达式) |
То же. |
(?<!95|98|NT|2000)Windows может соответствовать3.1Windows серединаWindows , но не совпадает2000Windows серединаWindows .\b(?!un)\w+\b может соответствоватьunsure sure unity used серединаsure иused
|
x|y |
Совпадение x или y. |
z|food может соответствоватьz илиfood .(z|f)ood затем сопоставьтеzood илиfood . |
[xyz] |
коллекция персонажей. Соответствует любому из включенных символов. |
[abc] может соответствоватьplain серединаa . |
[^xyz] |
Обеспечить регресс. Соответствует любому не включенному символу. | Например,[^abc] может соответствоватьplain серединаp .[^aei] совпадениеreign серединаr ,g иn
|
[a-z] |
диапазон символов. Соответствует любому символу в указанном диапазоне. |
[a-z] может соответствоватьa прибытьz Любой строчный алфавитный символ в диапазоне. Уведомление:[A-Z] Совпадать только с заглавными буквами английского языка |
[^a-z] |
Обеспечить регресс. Соответствует любому произвольному символу, не входящему в указанный диапазон. |
[^a-z] может соответствовать любомуa прибытьz Любой символ в диапазоне. |
\b |
Соответствует границе слова, то есть положению между словом и пробелом. |
er\b может соответствоватьnever серединаer , но не совпадаетverb серединаer . |
\B |
Сопоставьте границы слов. |
er\B может соответствоватьverb серединаer , но не совпадаетnever серединаer . |
\cx |
Соответствует управляющему символу, заданному x. | Например,\cM соответствовать одномуControl-M или возврат каретки.x Значение должно бытьA-Z илиa-z один. В противном случае будетc рассматривается как буквальныйc персонаж. |
\d |
Совпадение с числовым символом. Эквивалент [0-9]. |
4 = IV середина4
|
\D |
Соответствует нечисловому символу. Эквивалент [^0-9]. |
4 = IV середина ,= , ,I иV
|
\f |
Соответствует символу перевода формы. Эквивалент \x0c и \cL. |
[\f]{2,} может соответствовать\f\f\f середина\f\f\f . |
\n |
Соответствует символу новой строки. Эквивалентно \x0a и \cJ. |
\r\n(\w+) может соответствовать\r\nThese are\ntwo lines. середина\r\nThese
|
\r |
Соответствует возврату каретки. Эквивалент \x0d и \cM. |
\r\n(\w+) может соответствовать\r\nThese are\ntwo lines. середина\r\nThese
|
\s |
Соответствует любому пробельному символу, включая пробелы, табуляции, переводы форм и многое другое. Эквивалент [ \f\n\r\t\v]. |
\w\s может соответствоватьID A1.3 серединаD
|
\S |
соответствует любому непробельному символу. Эквивалентно [^ \f\n\r\t\v]. |
\s\S может соответствоватьint __ctr середина_
|
\t |
Соответствует символу табуляции. Эквивалент \x09 и \cI. |
(\w+)\t может соответствоватьitem1\titem2\t серединаitem1\t иitem2\t
|
\v |
Соответствует символу вертикальной табуляции. Эквивалентно \x0b и \cK. |
[\v]{2,} может соответствовать\v\v\v середина\v\v\v
|
\w |
Соответствует любому символу слова, включая подчеркивание. Эквивалентно[A-Za-z0-9_] . |
ID A1.3 серединаI ,D ,A ,1 и3
|
\W |
соответствует любому символу, не являющемуся словом. Эквивалентно[^A-Za-z0-9_] . |
ID A1.3 середина ,. . |
2.3 Общие методы
Обычный JavaScript по умолчанию: если обычное сопоставление прошло успешно, оно завершится, и сопоставление не будет продолжено. Если вы хотите найти все, вам нужно добавить логотипg
(глобальное совпадение)
test()
правило: Регулярное выражение ищет значение, указанное в строке, для соответствия строке. Возврат, если совпадение успешноtrue
, вернуться, если совпадение не удалосьfalse
.
использование:正则.test(字符串)
кейс:
фрагмент кода js
var str = "123abc";
var re = /\D/; // 匹配非数字
if(re.test(str)) {
console.log("不全是数字!");
} else {
console.log("全是数字!");
}
Консоль:
不全是数字
search()
правило: регулярно сопоставлять строку, если совпадение успешное, вернуть позицию, где совпадение было успешным, если совпадение не удалось, вернуть-1
использование:字符串.search(正则)
кейс:
фрагмент кода js
var str = "abcdef";
var re1 = /d/i; // 3
var re2 = /h/i; // -1
console.log(str.search(re1));
console.log(str.search(re2));
Консоль:
3
-1
match()
правило: Регулярно соответствует строке. Если совпадение успешное, возвращает массив успешных совпадений. Если совпадение не удается, возвращаетnull
использование:字符串.match(正则)
кейс:
фрагмент кода js
var str = "123fadf321dfadf4fadf1"; //(4) ["123", "321", "4", "1"]
var re = /\d+/g;
console.log(str.match(re));
Консоль:
(4) ["123", "321", "4", "1"]
replace()
правило: регулярно сопоставляет строку и заменяет успешно сопоставленную строку новой строкой. Первый параметр функции — успешно совпадающий символ, второй параметр: это может быть строка или функция обратного вызова.
использование:字符串.replace(正则,新的字符串)
кейс:
- Простой случай
фрагмент кода js
var str = 'aaa';
var re = /a+/g;
str = str.replace(re, "b");
console.log(str); // b
Консоль:
b
- Фильтрация деликатных слов
фрагмент html-кода
<div class="filtering-of-sensitive-words">
<h3>敏感词过滤</h3>
<p>替换前</p>
<textarea name="before" id="" cols="30" rows="10"></textarea>
<input type="button" value="确定" id="input1">
<p>替换后</p>
<textarea name="after" id="" cols="30" rows="10"></textarea>
</div>
фрагмент кода js
window.onload = function() {
var aT = document.getElementsByTagName("textarea");
var oInput = document.getElementById("input1");
var re = /非诚|中国船|监视之下/g;
oInput.onclick = function() {
// 一律单个替换: aT[1].value = at[0].value.replace(re, "*");
// 多个替换:
aT[1].value = aT[0].value.replace(re, function(str) {
var result = "";
for(var i=0; i<str.length; i++) {
result += "*";
}
return result;
});
}
}
Console
Перед заменой:非诚勿扰在中国船的监视之下寸步难行
После замены:**勿扰在***的****寸步难行
Три регулярных рейса
Что такое регулярное выражение? Регулярные выражения. Регулярные выражения, также известные как правила, позволяют компьютерам читать человеческие правила.
Регулярные выражения используются для управления строками.
Цели обучения этой статьи:
- Изучайте регулярные выражения JavaScript с помощью небольших историй
- Пусть небольшие партнеры понимают значение основных регулярных выражений и сами пишут регулярные выражения
3.1 Знакомство с правилами
Как выглядит обычный? как пользоваться? Это очень просто, три строки кода помогут вам начать
var regex = /^\d+$/;
var myNumber = '123';
console.log(regex.test(myNumber)); // true
Вышеупомянутый обычный, может проверить строкуmyNumber
Состоит ли он из чистых чисел, это такой простой, регулярный ввод!
Но если я посмею так закончить статью, держу пари, вы, ребята, захотите меня застрелить! Итак, давайте сначала познакомимся с регулярными выражениями через историю выражений:
Однажды вор Сяобай подарил вору Сяохэю коробку, похожую на русскую матрешку, с 3-мя уровнями вложенности:
Более того, они договорились о методе извлечения пароля транзакции: Xiaobai предоставит Xiaohei строку строк, Xiaohei нужно только узнать все связанные числа в строке, а затем склеить их в новый массив, первый из массив.Одним элементом является пароль для первого ящика и так далее...
"abc123def456hash789" -> [123, 456, 789] -> [пароль внешнего ящика 1, пароль среднего ящика 2, пароль самого внутреннего ящика 3]
Теперь предположим, что Black Thief использует JavaScript для обычного поиска:
index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=no">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>正则表达式</title>
</head>
<body>
<p>正则表达式 | <b>jsliang</b> 学习记录</p>
<script>
window.onload = function () {
var str = "abc123def456hash789"
function findNum(str) {
var arr = [];
var tmp = '';
for (var i = 0; i < str.length; i++) {
if (str.charAt(i) >= "0" && str.charAt(i) <= "9") {
tmp += str.charAt(i);
} else {
if (tmp) {
arr.push(tmp);
tmp = "";
}
}
}
if (tmp) {
arr.push(tmp);
tmp = "";
}
return arr;
}
console.log(findNum(str));
}
</script>
</body>
</html>
Писать здесь Сяо Хэй посчитал, что это неуместно. Приведенный выше код был слишком трудоемким и сложным для написания, поэтому он решил использовать регулярные выражения для поиска:
index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=no">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>正则表达式</title>
</head>
<body>
<p>正则表达式 | <b>jsliang</b> 学习记录</p>
<script>
window.onload = function() {
var str = "abc123def456hash789";
function findNum(str) {
return str.match(/\d+/g);
}
console.log(findNum(str));
}
</script>
</body>
</html>
Сяо Хэй сразу чувствует, что он очень хорош, с ним что-то не так? ! Всего одной строкой кода вы можете решить большую строку кодов, используемых при поиске строк!
Тогда, говоря об этом, друзья должны иметь простое представление об обычном, называемом горячим железом, Вот так~
3.2 Регулярный разбор
В приведенном выше примере вор Сяохэй используетstr.match(/\d+/g)
, что решает проблему получения пароля от ящика.
Итак, что означает эта строка регулярных выражений? Давайте оставим это в стороне и разберем простую строку:
^[a-z0-9_-]{6,12}$
Во-первых,^
Указывает начальную позицию совпадающей строки в сочетании со следующим[a-z0-9_-]
Указывает, что строка может начинаться сa-z
буквы,0-9
числа,_
подчеркивать,-
Столяр.
Потом,[a-z]
указывает на совпадениеa-z
любая отдельная буква;[0-9]
указывает на совпадение0-9
любой одиночный номер;[_]
Указывает на соответствующее подчеркивание;[-]
Указывает на соответствующий разъем-
. Итак, соединяя предыдущие,[a-z0-9_-]
Указывает, что строка может содержать数字
,字母
,_
,-
Эти четыре формы строк.
Потом,{6, 12}
Указывает, что длина строки6-12
немного.
Наконец,$
указывает конечный маркер,^
противоположный.
^
и$
При совместном использовании это означает точное совпадение.
В конце концов, друзья должны были догадаться о назначении этого регулярного выражения:Подтвердить имя пользователя. Имя пользователя может содержать только символы, цифры и символы подчеркивания.(_)
и связующие символы(-)
, а длина имени пользователя может составлять до 12 цифр, а самая короткая длина — 6 цифр.
Итак, как это используется в JavaScript? мы обычно используем/正则表达式/
Две косые черты для переноса регулярного выражения, которое мы собираемся написать:
var reg = /^[a-z0-9_-]{6,12}$/
Послушайте, это правило, если вам нужно, чтобы оно соответствовало строкеstr
. Затем просто используйте в кодеtest()
Методы испытаний:
var str = 'abc-cba_abc';
var reg = /^[a-z0-9_-]{6,12}$/;
console.log(reg.test(str)); // true
Таким образом мы сообщаем JavaScript:reg
пройти черезtest()
метод проверкиstr
Это соответствуетreg
правила, если они совпадают, возвращаютсяtrue
, если нет, вернутьfalse
. Здесь возвращаетсяtrue
, потому что нашstr
соответствуетreg
обычный.
test()
метод и другие полезные методы были интегрированы в[2.3 Обычный метод JS]Это внутри, и друзья, которые не могут ждать, могут щелкнуть ссылку, чтобы проверить это первым.
Полный код размещен ниже:
index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=no">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>正则表达式</title>
</head>
<body>
<p>正则表达式 | <b>jsliang</b> 学习记录</p>
<script>
window.onload = function() {
var str = 'abc-cba_abc';
var reg = /^[a-z0-9_-]{6,12}$/;
console.log(reg.test(str)); // true
}
</script>
</body>
</html>
3.3 Регулярная практика
Благодаря вышеуказанному пониманию у друзей должно быть начальное понимание регулярных выражений.Console 1 - Console 3
, которыеtrue
, которыеfalse
:
index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=no">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>正则表达式</title>
</head>
<body>
<p>正则表达式 | <b>jsliang</b> 学习记录</p>
<script>
window.onload = function() {
var str = "Cheer for yourself";
var reg1 = /^Cheer/;
var reg2 = /yourself$/;
var reg3 = /for/;
console.log(reg1.test(str));
console.log(reg2.test(str));
console.log(reg3.test(str));
}
</script>
</body>
</html>
Ответ заключается в том, что все три возвращаютсяtrue
. в этих трехconsole.log()
середина:
Первым определить, начинается ли строка сCheer
начало;
Второй оценивает, начинается ли строка сyourself
конец;
Третий определяет, содержит ли строкаfor
.
В повседневной работе этот метод часто используется для оценки пользовательского ввода.string
Содержит ли он какой-либо текст, например:jsliang 是傻*
, надо судить и заменить наjsliang 是帅哥
, что касается того, как заменить чувствительные слова, друзья, которые не могут ждать, могут пойти в[2.3 Обычный метод JS]Узнай сначала~
3.4 Улучшение: () соответствует детям
Так называемые совпадающие подпункты на самом деле являются нашими скобками()
. Он также имеет другое значение, называемое операциями группировки. Ниже мы цитируем главы[2.2 Правила регулярных выражений]Определение в:
выражение | Парафраз | использование |
---|---|---|
(子表达式) |
Отмечает начало и конец подвыражения. |
(\w)\1 может соответствоватьdeep серединаee
|
Если просто объяснить смысл, друзья могут запутаться. Итак, начнем с кода:
фрагмент кода js
var str = "2018-11-28";
var re = /(\d+)(-)/g;
str = str.replace(re, function($0, $1, $2){
// 第一个参数:$0(母亲)
// 第二个参数:$1(第一个孩子)
// 第三个参数:$2 (第二个孩子)
console.log("$0:" + $0); // 2018- 以及 11-
console.log("$1:" + $1); // 2018 以及 11
console.log("$2:" + $2); // - 以及 -
return $1 + '.';
});
console.log(str); // 2018.11.28
Консоль:
$0:2018-
$1:2018
$2:-
$0:11-
$1:11
$2:-
2018.11.28
во-первых, давайте разберем это регулярное выражение:
-
/(\d+)/
Представляет любое одно или несколько чисел -
/(-)/
Указывает совпадающие символы-
-
g
означает более одного совпадения
Таким образом, это обычное значение означает совпадение один или несколько раз数字-
строка формы.
потом, мы использовалиreplace()
метод. мы наблюдаемConsole
Распечатанные результаты показывают, что:$0
наш обычныйvar re = /(\d+)(-)/g
соответствоватьvar str = "2018-11-28"
Полученный результат, здесь мы совпали дважды, а именно2018-
и11-
;$1
одна из наших скобок(\d+)
, так что результат2018
а также11
;$2
наша вторая скобка(-)
, так что результат-
а также-
.
Наконец, что мы делаем,$1
плюс.
, и вернуть окончательный результат вstr
, что является окончательным результатом:2018.11.28
.
упоминается здесь
replace()
метод, подробнее:Нажмите, чтобы перейти
【Снова】Если друзья все еще чувствуют себя неудовлетворенными, то давайте возьмем еще один абзац:
фрагмент кода js
var str = "abc";
var re = /(a)(b)(c)/;
console.log(str.match(re));
Console
(4) ["abc", "a", "b", "c", index: 0, input: "abc", groups: undefined]
Мы не будем здесь много говорить об этом, я считаю, что после этих двух случаев друзья должны быть правы.()
иметь определенное понимание.
3.5 Улучшение: класс символов []
Что такое класс персонажа?
Так называемый класс символов представляет собой группу подобных элементов[]
Все такие квадратные скобки представляют символ.
Без лишних слов начнем с кода:
фрагмент кода js
var str1 = "abcd";
var re1 = /a[bcd]c/;
console.log(re1.test(str1)); // true
var str2 = "abc";
var re2 = /a[^bcd]c/;
console.log(re2.test(str2)); // false
var str3 = "a.c";
var re3 = /a[a-z0-9A-Z]c/;
console.log(re3.test(str3)); // false
Console
true
false
false
во-первых, мы сначала разбираем первую часть:
-
/a/
: соответствует буквамa
-
/[bcd]/
: соответствует буквамbcd
один из -
/[d]
: соответствует буквамd
Итак, видно, что мы используемre1
тестироватьstr1
если он совпадает, он вернетсяtrue
.
потом, разбираем вторую часть:
-
^
если написано в[]
Слово внутри означает исключение. представляет здесьa
иc
середина не может бытьbcd
любой из
Итак, видно, что мы используемre2
тестироватьstr1
если он совпадает, он вернетсяfalse
.
Наконец, разбираем третью часть:
-
/[a-z0-9A-Z]/
: соответствует строчным буквамa-z
, или число0-9
, или заглавные буквыA-Z
. которыйa
иc
Наверху могут быть только те символы, которые соответствуют земле.
Итак, видно, что мы используемre3
тестироватьstr3
если он совпадает, он вернетсяfalse
.
Четыре ретроспективных резюме
В Главе 3 мы представили силу, рассказали, как ее использовать, и с помощью небольших упражнений()
а также[]
Объяснение , пусть друзья узнают больше об использовании регулярности в JavaScript...
но!
Это конец? !
Нет!
так какjsliangВремя ограничено, поэтому невозможно представить удовольствие от регуляризации и то, как использовать регуляризацию на работе для повышения эффективности работы один за другим.
Итак, в главе 2【Интеграция】середина,jsliangИнтегрируйте онлайн-ресурсы и запишите некоторые часто используемые инструменты регуляризации. В нем много вещей, которые не рассматриваются в этой статье. Заинтересованные друзья могут попытаться углубить свое понимание регуляризации один за другим.
———— На конец————
При написании этой статьиjsliangPlay Sex Dafa написал следующую игру (пожалуйста, используйте компьютер для просмотра):
- игровой адрес:Первый в мире клуб боевых искусств
- кодовый адрес:GitHub.com/l ian Jun Ron…
5 Исправления в статье
- Наггетс Обзор 2018-11-20
- тип: Ошибка содержания
- обратная связь с пользователями:Kaelalv
- Содержание отзыва: При разборе этого кода в содержании 3.2:
var str = 'abc-cba_abc';
var reg = /^[a-z0-9_-]{6,12}$/;
console.log(reg.test(str)); // true
Автор допускает ошибку, если он неправильный, возвращает true, если не совпадает, если правильный, возвращает false, если не совпадает.
- Обработка обратной связи: исправлено, спасибо за отзыв
Ребята, если вы считаете, что эта статья неплохая, не забудьте поставить лайк на Nuggets и перейти на GitHub.star, ВашstarЭто моя мотивация учиться!Адрес GitHub
jsliangбиблиотека документацииЗависит отЛян ЦзюньронгиспользоватьCreative Commons Attribution-NonCommercial-ShareAlike 4.0 Международная лицензияЛицензия.
на основеGitHub.OM/l ЯнДжун Рон…Создание работ выше.
Права на использование, отличные от разрешенных в настоящем Лицензионном соглашении, могут быть получены отCreative Commons.org/licenses/не…получено в.