Повторное изучение интерфейса (9) Регулярная практика действительно требует больше практики

JavaScript

Введение в регулярные выражения

что такое регулярное выражение

Регулярные выражения: выражения, используемые для соответствия регулярным правилам, регулярные выражения изначально были ранним исследованием ученых о том, как работает человеческая нервная система, и теперь широко используются в языках программирования. Обычные таблицы обычно используются для извлечения и замены текста, соответствующего определенному шаблону (правилу).Регулярное выражение — это логическая формула для работы со строками., заключается в использовании некоторых предопределенных определенных символов и комбинации этих конкретных символов для формирования «строки правила», эта «строка правила» используется для выражения своего рода логики фильтрации для строк.

Роль регулярных выражений

  1. Соответствует ли данная строка логике фильтрации регулярного выражения (соответствие)
  2. Мы можем получить нужную нам часть строки с помощью регулярных выражений (извлечение)
  3. Мощная возможность замены строки (заменить)

Особенности регулярных выражений

  1. Очень гибкий, логичный и функциональный
  2. Сложное управление струнами может быть достигнуто быстро и очень просто
  3. Для новичков это более неясно и сложно для понимания

Состав регулярных выражений

  • нормальные персонажи
  • Специальные символы (метасимволы): символы со специальным значением в регулярных выражениях.

метасимвол

Общие метастроки

метасимвол иллюстрировать
\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));
  

Эпилог

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