Введение в регулярные выражения
что такое регулярное выражение
Регулярные выражения: выражения, используемые для соответствия регулярным правилам, регулярные выражения изначально были ранним исследованием ученых о том, как работает человеческая нервная система, и теперь широко используются в языках программирования. Обычные таблицы обычно используются для извлечения и замены текста, соответствующего определенному шаблону (правилу).Регулярное выражение — это логическая формула для работы со строками., заключается в использовании некоторых предопределенных определенных символов и комбинации этих конкретных символов для формирования «строки правила», эта «строка правила» используется для выражения своего рода логики фильтрации для строк.
Роль регулярных выражений
- Соответствует ли данная строка логике фильтрации регулярного выражения (соответствие)
- Мы можем получить нужную нам часть строки с помощью регулярных выражений (извлечение)
- Мощная возможность замены строки (заменить)
Особенности регулярных выражений
- Очень гибкий, логичный и функциональный
- Сложное управление струнами может быть достигнуто быстро и очень просто
- Для новичков это более неясно и сложно для понимания
Состав регулярных выражений
- нормальные персонажи
- Специальные символы (метасимволы): символы со специальным значением в регулярных выражениях.
метасимвол
Общие метастроки
метасимвол | иллюстрировать |
---|---|
\d | совпадение чисел |
\D | соответствует любому нечисловому символу |
\w | Совпадение с буквами, цифрами или символами подчеркивания |
\W | Сопоставьте все, что не является буквой, цифрой, символом подчеркивания |
\s | соответствует любому пробелу |
\S | Соответствие всему, что не является пустым символом |
. | соответствует любому одиночному символу, кроме новой строки |
^ | Указывает текст, совпадающий с началом строки (начиная с кого) |
$ | Указывает текст, который соответствует концу строки (кем он заканчивается) |
квалификатор
квалификатор | иллюстрировать |
---|---|
* | Повторить ноль или более раз |
+ | повторить один или несколько раз |
? | повторить ноль или один раз |
{n} | повторить n раз |
{n,} | Повторить n или более раз |
{n,m} | Повторить от n до m раз |
разное
[] 字符串用中括号括起来,表示匹配其中的任一字符,相当于或的意思
[^] 匹配除中括号以内的内容
\ 转义符
| 或者,选择两者中的一个。注意|将左右两边分为两部分,而不管左右两边有多长多乱
() 从两个直接量中选择一个,分组
eg:wh(a|e)y匹配whay和whey
[\u4e00-\u9fa5] 匹配汉字
demo
Подтвердить номер телефона:
^\d{11}$
Подтвердите почтовый индекс:
^\d{6}$
Подтвердите электронную почту xxx@why.cn:
^\w+@\w+\.\w+$
Использование регулярных выражений в JavaScript
Создать обычный объект
Способ 1:
var reg = new Regex('\\d', 'i');
var reg = new Regex('\\d', 'gi');
Способ 2:
var reg = /\d/i;
var reg = /\d/gi;
параметр
логотип | иллюстрировать |
---|---|
i | игнорировать регистр |
g | глобальное совпадение |
gi | Глобальное совпадение + игнорирование регистра |
обычный матч
// 匹配日期
var dateStr = '2019-04-10';
var reg = /^\d{4}-\d{1,2}-\d{1,2}$/
console.log(reg.test(dateStr));
Регулярная добыча
// 1. 提取工资
var str = "张三:1000,李四:5000,王五:8000。";
var array = str.match(/\d+/g);
console.log(array);
// 2. 提取email地址
var str = "123123@xx.com,fuck@valuedopinions.cn 286669312@qq.com 2、emailenglish@emailenglish.englishtown.com 286669312@qq.com...";
var array = str.match(/\w+@\w+\.\w+(\.\w+)?/g);
console.log(array);
// 3. 分组提取
// 3. 提取日期中的年部分 2015-5-10
var dateStr = '2016-1-5';
// 正则表达式中的()作为分组来使用,获取分组匹配到的结果用Regex.$1 $2 $3....来获取
var reg = /(\d{4})-\d{1,2}-\d{1,2}/;
if (reg.test(dateStr)) {
console.log(RegExp.$1);
}
Регулярная замена
// 1. 替换所有空白
var str = " 123AD asadf asadfasf adf ";
str = str.replace(/\s/g,"xx");
console.log(str);
// 2. 替换所有,|,
var str = "abc,efg,123,abc,123,a";
str = str.replace(/,|,/g, ".");
console.log(str);
Организована небольшая демонстрация, которую вы можете расширить самостоятельно
var str = 'b';
// var reg = /\d/; //只要字符串中有数字,就符合要求
// var reg = /\D/; //只要字符串中有非数字,就符合要求
// var reg = /\w/; //只要字符串中有数字或者字母,或者下划线,就符合要求
// var reg = /\W/; //只要字符串中有数字或者字母,或者下划线,就符合要求
// var reg = /\s/; //只要字符串中有空白字符就符合要求
// var reg = /\S/; //只要字符串中有非空白字符就符合要求
// var reg = /./; //只要有非换行符就符合条件
// var reg = /^a/; //只要字符串以a开头就符合条件
// var reg = /a$/; //只要字符串以a结尾就符合条件
// var reg = /^abc$/; //要求字符串中只能有abc
// var reg = /^\d{11}$/;//要求字符串中只能出现11次数字
// var reg = /^\d{3,}$/;//要求字符串中只能出现3次及以上的数字
// var reg = /\d{3,}/;//要求字符串中只要包含3个及以上的数字就符合条件
// var reg = /^\d{3,5}$/;//字符串中只能出现3~5次的数字
// var reg = /^\d*$/; //字符串中要么什么都没有,要么就只能是数字
// var reg = /^\d+$/; //字符串中至少一个数字
// var reg = /^\d?$/; //字符串中要么什么都没有,要么只能有一个数字
// var reg = /^[abcd]$/; //只能有一个字符,而这个字符可以是中括号的任何一个
// var reg = /^[^abcd]$/; //只能有一个字符,而这个字符可以不能有中括号的任何一个
// var reg = /^\.$/; // 字符串中只能有一个点
// var reg = /^a|c$/; //以a开头获取以c结尾
// var reg = /^wh(a|g)y$/ //whay或者是whgy
// var reg = /^[a-Z]$/; //错误的
// var reg = /^[a-zA-Z]$/;
// var reg = /^[A-z]$/;//大写字母在字符集中排序更靠前
console.log(reg.test(str));
Эпилог
- Регулярные выражения,это вещь очень простая когда простая,но очень сложная когда сложная.В конечном счете я с ней не знаком,или забыл.Нашел когда разбирался, но я его сильно забуду через некоторое время, т.к. в большинстве случаев это гугл, так что если хочешь быть стабильным, то можно только больше практиковаться и больше организовывать, а потом когда забудешь, будет впечатление, и вы быстро соберете его.
- Если вы зайдете слишком далеко, вы многое увидите, когда оглянетесь назад