** Вопрос: ** Как разрешить только номера на японском языке (Хирагана/Катагана)
Случай использования: я хочу взять поле "число" (мой вход должен принимать только номера с английского и японского)
Я написал следующий образец фрагмента:
// The goal of this demo is to demonstrate the RegEx patterns for English and Japanese Chracters
var english = "09c12";
var japanese = "0123あb";
console.log("-----English Test---")
console.log(english.replace(/[^0-9\/]/gi, ''));
console.log("--------------------")
console.log("-----japanese Test---")
console.log(japanese.replace(/[^0-9\/]/gi, ''));
console.log("--------------------")
Проблема. Это не работает для японцев. Пожалуйста, просветите меня.
Я предполагаю, что японские символы имеют разные значения ASCII/Unicode?
Пожалуйста, помогите мне исправить код. Я хочу просто убедиться, что пользователь вводит числа.
Спасибо
Ваши японские цифры не являются простыми цифрами ASCII, они являются символами полной ширины юникода (см. Http://www.fileformat.info/info/unicode/char/ff10/index.htm)
синтаксис регулярных выражений в javascript не имеет классов unicode, поэтому вам придется выбирать их вручную, указав диапазон Unicode.
console.log("0123あb".replace(/[\uff10-\uff19]/g, "_"));
console.log("0123あb".replace(/[^\uff10-\uff19]/g, "_"));
console.log(String.fromCharCode(...[...Array(10)].map((x, i) => 0xff10 + i))
);
'\uff10'
-> "0"
, '\uff19'
-> "9"
, поэтому этот диапазон включает только 10 цифр полной ширины.
Это полезно для вас?
var english = "09c12";
var japanese = "0123あsd2";
console.log("-----English Test---")
console.log(english.replace(/[^0-9\/]/gi, ''));
console.log("--------------------")
console.log("-----japanese Test---")
console.log(japanese.replace(/[^0-9]/g, ''));
console.log("--------------------")
0123あsd2
... что это за цифры? Я думаю, что в кандзи числа для китайского, японского и корейского выглядят примерно одинаково, а не это, что выглядит как смесь арабского языка и символов. В любом случае вам, вероятно, придется использовать здесь литералы Unicode. Обновите свой вопрос, и, возможно, кто-то может ответить.0123ab
в хирагане. Обновлено это в вопросе @TimBiegeleisen