仅在文本框中允许使用中文字符和英文数字-Javascript

时间:2019-04-25 05:04:36

标签: javascript regex reactjs unicode

以下是我的正则表达式,仅在文本框中接受中文字符和英文数字,​​但对于某些下文所述的情况却失败了。让我知道我在这里做错了。

正则表达式-

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

失败案例-

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

反应示例代码设置-https://codepen.io/anon/pen/dLQJKM

1 个答案:

答案 0 :(得分:1)

您的模式正在检查输入是否至少包含一个这样的字符。 只要有一个数字或一个中文字符,它将认为您的输入是有效的。

您要查找的是是否有任何不匹配的字符。为此,您只需要使用negated character class [^...,然后检查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