Представление строки чисел в форме, разделенной тысячами — применение регулярных выражений JS

внешний интерфейс Операционная система JavaScript регулярное выражение

случай

Как преобразовать строку целых чисел в форму с разделением тысяч, например 10000000000, в 10 000 000 000.

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

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

#####концепция Регулярные выражения, также известные как регулярные выражения. (английский: регулярное выражение, часто сокращенно regex, regexp или RE в коде), понятие в информатике. Это не только что-то уникальное для Javascript, изящный танец регулярных выражений можно увидеть в большинстве основных операционных систем, основных языках разработки и бесчисленном количестве прикладного программного обеспечения. Регулярное выражение — это логическая формула для работы со строками, которая заключается в использовании некоторых предопределенных определенных символов и комбинаций этих конкретных символов для формирования «обычной строки», которая используется для выражения соответствующих символов. . #####Функции

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

В этой статье обсуждаются только некоторые распространенные и важные методы регулярных выражений, поддерживаемые Javascript, для решения вышеуказанных случаев.Если вы хотите проверить все мощные функции регулярных выражений в Javascript, нажмите здесь.Объект регулярного выражения JavaScript, проверьте официальную документацию W3school.

Сортировать идеи

Первое, что нужно понять, это то, что числовой формат, в который мы собираемся преобразовать, таков: начиная с цифры единиц слева, вставляйте разделитель тысяч перед каждыми тремя цифрами.,, то есть мы можем представить, что хотим поставить пробел перед каждыми тремя цифрами""сопоставить и заменить разделителем тысяч,. Количество цифр, следующих за каждым разделителем тысяч, равно 3 или кратно 3.

написание кода

Создайте литерал регулярного выражения с глобальным модификатором соответствия g.var reg = //g;W3C интерпретирует глобальные совпадения следующим образом: поиск всех совпадений вместо остановки после того, как будет найдено первое совпадение.

Поскольку это должно совпадать справа налево, это означает конец$является обязательным. Для трех цифр\d{3}чтобы представить, что, поскольку мы не знаем, сколько существует наборов таких трехзначных чисел, нам нужно\d{3}добавить после+, чтобы соответствовать любой строке, содержащей хотя бы один набор из трех цифр. Слишком далеко,/(\d{3})+$/gОбозначает 3 или кратные 3 цифры в конце.

Поскольку заменяемой является та, которая непосредственно предшествует каждым трем цифрам (с конца)"", поэтому вам нужно использовать предварительную проверку вперед, то есть?=n(соответствует любой строке, за которой непосредственно следует указанная строка n). В чем польза предварительной предварительной проверки? Вот пример: есть строкаvar str = "abaaaaa";, мы хотим представить символ a, за которым следует символ b, поэтому регулярное выражение записывается так:var reg = /a(?=b)/g;, который соответствует символу, за которым сразу следуетbхарактерa, нитьstrЕсть только один подходящийa, и, наконец, проверьте, соответствует ли результат ["a"]. Код для этого примера выглядит следующим образом:

var str = "abaaaaa",
    reg = /a(?=b)/g;
console.log(str.match(reg));

После приблизительного понимания прямой предварительной проверки, возвращаясь к исходному случаю, мы можем написать/(?=(\d{3})+$)/g;,Зачем(?=...)Ничего не писать перед собой? Потому что мы ищем те, за которыми следуют три цифры""Ах, конечно, Соре не нужно ничего писать. Давайте проверим, есть ли три совпадения""?

var str = "10000000000",
    reg = /(?=(\d{3})+$)/g;
console.log(str.match(reg));

Результат таков, это действительно три"".

Ниже мы заменяем эти три пустых места:

var str = "10000000000",
    reg = /(?=(\d{3})+$)/g;
console.log(str.replace(reg, ","));

Результат следующий, преобразование прошло успешно.

Но, это еще не конец... Теперь это одиннадцать цифр. Если вы добавите 0, чтобы получить двенадцать цифр, это будет кратно 3. Давайте попробуем:

var str = "100000000000",
    reg = /(?=(\d{3})+$)/g;
console.log(str.replace(reg, ","));

Результат становится таким:

Эта строка цифр также была добавлена ​​на передний план.,. Эта причина не будет объясняться, вы должны понять, почему. Итак, как решить эту проблему? Давайте улучшим код, в\dДобавить границу не слова\B, используется для указания того, что за совпадающим пустым пространством не может следовать граница слова, так что передний,Избавиться. Окончательный код выглядит следующим образом

var str = "100000000000",
    reg = /(?=(\B\d{3})+$)/g;
console.log(str.replace(reg, ","));

Суммировать

Таким образом, дело о «преобразовании строки целых чисел в форму с разделителями тысяч» закончено. Позвольте мне разобраться в некоторых точках знаний, используемых в этом случае.

  • gявляется модификатором для глобального совпадения, что означает поиск всех совпадений вместо остановки после того, как будет найдено первое совпадение.
  • $является конечным квантором, таким какn$, который соответствует любой строке, оканчивающейся на n.
  • \dметасимвол для поиска чисел.
  • n{X}квантификатор, который соответствует строкам, содержащим X последовательностей n.
  • n+квантификатор, который соответствует любой строке, содержащей хотя бы одно n.
  • ?=nПрямой просмотр вперед, который соответствует любой строке, за которой непосредственно следует указанная строка n.
  • match()Метод объекта String, который находит совпадение для одного или нескольких регулярных выражений.
  • replace()Метод объекта String, который заменяет подстроки, соответствующие регулярному выражению.
  • \Bэто метасимвол, который соответствует границе слова, а его дополнение является метасимволом\b, указывая совпадающие границы слов.

Эта статья не может быть очень подробной, если вы все еще запутались после ее прочтения, вам нужно изучать регулярные выражения с нуля. Комментарии или предложения приветствуются, спасибо за чтение!