仅支持中英文和数字,字数不超过4个汉字或8个字母的正则该怎么写呢?

微信公众号菜单名字的规范要求“仅支持中英文和数字,字数不超过4个汉字或8个字母”。

其中一个汉字占俩字符,数字和英文是一个字符,像中英数字混合的比如“哈哈12b”正好8个字符是可以的。

image

求教这个正则咋写啊

阅读 10.2k
2 个回答

一个正则写不出来,匹配出所有中文和所有英文数字然后计算吧。

如果需要依据错误的场景来做不同提示,其实分开来做检测更合适一些。

function test(str) {
    if (Object.prototype.toString.call(str).slice(8, -1).toLowerCase() !== 'string') {
        throw Error('param str type error ');
    } else if (!str) {
        console.log('param str is a empty string');
        return false;
    } else if (!/^[\u4e00-\u9fa5a-zA-Z0-9]+$/.test(str)) {
        console.log('字符串中包含除中文、数字、英文以外的字符!');
        return false;
    } else if (str.replace(/[\u4e00-\u9fa5]/g, "**").length > 8) {
        console.log('字符串长度超过限制!');
        return false;
    }
    return true;
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏