求js正则表达式写法 10

正则表达式要求:用户名最长不得超过7个汉字,或14个字节(数字、字母或下划线),且不能是纯数字谢谢了... 正则表达式要求:
用户名最长不得超过7个汉字,或14个字节(数字、字母或下划线),且不能是纯数字

谢谢了
展开
 我来答
Zjmainstay
2014-08-11 · 知道合伙人互联网行家
Zjmainstay
知道合伙人互联网行家
采纳数:580 获赞数:1129
http://www.zjmainstay.cn

向TA提问 私信TA
展开全部
var pattern = /^(?!^\d+$)(?:[\u4e00-\u9fa5]{0,7}|[a-zA-Z\d_]{0,14})$/;

本正则不支持中文英文混合。

更多正则内容请关注:http://www.zjmainstay.cn
追问
能帮忙写一个,除满足上诉条件,也可以支持中英混合的吗?
追答
一直没有找到好的解决方法,否则就给你写了,下面提供一个替代方案吧。

var str       = '12345678';
var str       = 'English';
var str       = '纯中文';
var str       = '1Eng2lish3';
var str       = '123中45678文';
var str       = 'English中文';
var str       = '123中Eng文';
//排序后,字母数字会在字符串开头,汉字在结尾
//没有匹配默认为''
//对字符串分割排序再重组成有序的英文汉字串,然后匹配
var matchEn   = String.prototype.split.call(str, '').sort().join('').match(/^(?!^\d+$)[a-zA-Z\d_]+/) || '';
var matchZh   = String.prototype.split.call(str, '').sort().join('').match(/[\u4e00-\u9fa5]+$/) || '';
//英文占一个1节,中文占2个
var lengthEn  = String.prototype.split.call(matchEn, '').length;
var lengthZh  = String.prototype.split.call(matchZh, '').length * 2;
//两个相加结果不会超过14(指定长度)即可
var lengthSum = lengthEn + lengthZh;

//打印总长度
console.log(lengthSum);

//后续自己判断处理
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
庹琅涂承安
2019-05-13 · TA获得超过3914个赞
知道大有可为答主
回答量:3086
采纳率:29%
帮助的人:456万
展开全部
用来提取可以这样写:
var
reg=/\w{4,28}\.[A-Z]{2}\d{2}/g
用来验证可以这样写[不能要g]:
var
reg=/^\w{4,28}\.[A-Z]{2}\d{2}$/
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式