Разрешить китайские и английские символы только в текстовом поле - Javascript - PullRequest
0 голосов
/ 25 апреля 2019

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

Regex -

const regex = /[\u4E00-\u9FFF\u3400-\u4DFF\uF900-\uFAFF0-9]+/g

Неудачные случаи -

  • 090 asffa
  • 0342eq ###
  • 42242442dsfsfs

Пример кода реагирования - https://codepen.io/anon/pen/dLQJKM

1 Ответ

1 голос
/ 25 апреля 2019

Ваш шаблон проверяет, содержит ли ввод хотя бы один такой символ. Пока будет либо число, либо китайский символ, он будет считать ваш ввод действительным.

Вам нужно найти, есть ли какой-либо символ, который не соответствует этому шаблону. Для этого вам просто нужно использовать класс отрицательных символов [^... и затем проверить, является ли string.match(regex) ложным.

const reg = /[^\u4E00-\u9FFF\u3400-\u4DFF\uF900-\uFAFF0-9]+/g;
const test = txt => {
  console.log(txt, !txt.match(reg));
};


test('090 asffa'); // false
test('0342eq###'); // false
test('42242442dsfsfs'); // false
test('foo我'); // false
test('245我吧'); // true
test('245'); // true
test('我吧'); // true
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...