以下是我的正则表达式,仅在文本框中接受中文字符和英文数字,但对于某些下文所述的情况却失败了。让我知道我在这里做错了。
正则表达式-
const regex = /[\u4E00-\u9FFF\u3400-\u4DFF\uF900-\uFAFF0-9]+/g
失败案例-
反应示例代码设置-https://codepen.io/anon/pen/dLQJKM
答案 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