Javascript-форум (https://javascript.ru/forum/)
-   Javascript под браузер (https://javascript.ru/forum/css-html/)
-   -   keyCode для различных клавиатур (https://javascript.ru/forum/css-html/77043-keycode-dlya-razlichnykh-klaviatur.html)

Malleys 19.03.2019 01:37

Цитата:

Сообщение от MC-XOBAHCK
То есть эмодзи это цифры?

Но если только в квадратик обвести цифру, то можно так сказать 0️⃣ 1️⃣ 2️⃣ 3️⃣ 4️⃣ 5️⃣ 6️⃣ 7️⃣ 8️⃣ 9️⃣

/\d/ означает /[0-9]/
/\D/ означает /[\u0000-\u002f\u003a-\uffff]/, т. е. все кодовые точки в диапазоне с U+0000 по U+FFFF кроме тех, что находятся с U+0030 по U+0039.

Поскольку 1️⃣ 2️⃣ 3️⃣ и т. д. технически состоят из числа(с U+0030 по U+0039), U+FE0F VARIATION SELECTOR-16 и U+20E3 COMBINING ENCLOSING KEYCAP, то /\D/ способен понизить «эмоциональность» чисел!
alert("0️⃣ 1️⃣ 2️⃣ 3️⃣ 4️⃣ 5️⃣ 6️⃣ 7️⃣ 8️⃣ 9️⃣".replace(/\D/g, ""))


Поскольку кодовые точки начиная с U+10000 представлены как сурргатные пары /[\ud800-\ud8ff][\udc00-\udfff]/, то не-цифра находится так... /[\ud800-\ud8ff][\udc00-\udfff]|[\u0000-\u002f\u003a-\uffff]/

Ваш пример...
<input>

<script>
	const input = document.querySelector("input");
	
	input.addEventListener("input", () => {
		input.value = input.value.replace(/[\ud800-\ud8ff][\udc00-\udfff]|[\u0000-\u002f\u003a-\uffff]/g, "");
	})
</script>


Выражение /[\ud800-\ud8ff][\udc00-\udfff]|[\u0000-\u002f\u003a-\uffff]/ слишком запутанно, может это можно как-то упростить? Что-бы можно было написать примерно так /\D/.

Как сказать-то... The "u" flag to the rescue!

Флаг "u" понимает, что суррогатные пары нужно воспринимать как один символ! /\D/u

Ваш пример...
<input>

<script>
	const input = document.querySelector("input");
	
	input.addEventListener("input", () => {
		input.value = input.value.replace(/\D/gu, "");
	})
</script>


Если вы хотите писать красивые и читаемые регулярные выражения и вы используете исключающие диапазоны, то вам всегда нужен флаг "u", если только вы не собираетесь вручную задавать диапазон суррогатных пар.

Цитата:

Сообщение от MC-XOBAHCK
А тут вместо гавняшки кракозябы вылазят.

Да, странно, до сих пор не исправили! 😕 Хотя я уже поднимал эту тему, и даже намекнул, в чём проблема! https://javascript.ru/forum/site/666...propustil.html

рони 19.03.2019 02:10

Цитата:

Сообщение от Malleys
Хотя я уже поднимал эту тему, и даже намекнул, в чём проблема!

может попробовать написать прямо админу https://javascript.ru/forum/members/1-ilya-kantor/ ?

MC-XOBAHCK 19.03.2019 02:25

Цитата:

Сообщение от Malleys (Сообщение 504961)
Если вы хотите писать красивые и читаемые регулярные выражения и вы используете исключающие диапазоны, то вам всегда нужен флаг "u", если только вы не собираетесь вручную задавать диапазон суррогатных пар.

Спасибо за науку! У меня в шпоргалке такого флага нет, добавил - буду изучать.

laimas 19.03.2019 05:40

Цитата:

Сообщение от MC-XOBAHCK
У меня в шпоргалке такого флага нет

К куцым базовым возможностям RegExp в JS не только этот флаг добавлен, есть и иное, что давно пора было добавить, но как всегда - не все даже среди последних браузеров поддерживают, а есть и поддержка, но с багами.

рони 19.03.2019 10:44

Внимание всем! может кто-то описать 1.в чём проблема с эмодзи на форуме?
2. как это можно решить?

Nexus 19.03.2019 12:20

рони, мб. проблема в кодировке бд?

рони 19.03.2019 12:47

Nexus,
я плохо разбираюсь в данной тематике, не могу даже прокомментировать твоё сообщение, есть желание довести лаконично до админа данную проблему, которую самостоятельно я даже не могу внятно описать.

Nexus 19.03.2019 13:07

рони, без знания используемой кодировки бд сложно сказать в этом дело или нет.

Прочитайте "вступление" и раздел "Немного о кодировках и представлениях", это должно дать понимание того, о чем я пишу:
https://codex.so/mysql-and-emoji

рони 19.03.2019 13:26

Nexus,
Цитата:

Сообщение от Админ
БД в unicode


MC-XOBAHCK 19.03.2019 13:29

Цитата:

Сообщение от laimas (Сообщение 504965)
К куцым базовым возможностям RegExp в JS не только этот флаг добавлен, есть и иное, что давно пора было добавить, но как всегда - не все даже среди последних браузеров поддерживают, а есть и поддержка, но с багами.

А где следить за этими новинками? На MDN или есть отдельный сайт?

Так как у меня проблемы с регулярками, я себе в тетрадку выписал разные правила для регулярок и поставил её возле монитора. Из флагов у меня было три: i, g, m. Добавил вчера u, но описания для него ещё не нашёл.


Часовой пояс GMT +3, время: 17:30.