我在写一个表单验证,想用正则判断用户输入的是否是中文,但试了几个写法都不对。比如我用了 /[u4e00-u9fa5]/,结果输入“你好123”也能通过,明明里面有数字啊!
是不是这个正则只匹配了部分字符?我想要的是整个字符串都必须是中文才行。有没有正确的写法?
const isChinese = (str) => {
return /[u4e00-u9fa5]/.test(str);
};
console.log(isChinese('你好123')); // 返回 true,但应该返回 false
首先,要匹配中文字符,你需要正确地写 Unicode 范围,并且记得转义反斜杠。其次,要确保整个字符串都是中文字符,可以使用 ^ 和 $ 来匹配字符串的开始和结束位置。
修改后的正则表达式应该是这样的:
这里的关键点在于 ^ 和 $,它们确保了从字符串的开始到结束都是中文字符。希望这样能解决问题。记得在写正则的时候仔细检查字符范围和转义符号,不然很容易出错。