js正则校验姓名的正则

刚做的项目中有个姓名的正则规则,在网上查了下 也没有类似的正则,自己正则也很菜,同事一大神就写了这套正则,特此记下来学习一下。

首先说一下校验的需求吧

 1)字母与符号的组合,符号仅允许下列符号“•”或“_” 或“-”或空格(“_” 或“-”或空格仅允许半角模式)。若姓名中有符号“.”、“。”、“.”、“,”、“、”时(含半角、全角及各语种),将其转换为“•”

 2)“•”或“_”或“-”只能出现在两个汉字或两个字母之间,两个汉字或两个字母之间只允许有1个符号,若有多个符号只保留第1个。   

 3)汉字之间需去除空格;英文名只保留字母中间的连续空格的第一个空格,其他空格都去除;汉字与符号之间,字母与符号之间不允许有空格,需去除。

大概也就这样的一个正则吧,下面直接放代码

  // _name是接受姓名字符串的变量
  // 连续多个特殊字符保留一个, 特殊字符两边去除空格
  _name = _name.replace(/\s*([·_-])[\s·_-]*/ig, '$1');
  // 英文只能连续一个空格 // 中文去掉全部空格
  _name = _name.replace(/\s+/ig, /[a-zA-Z]/.test(_name) ? ' ' : '');
  // 移除首尾空格
  _name = _name.trim();
  // 判断是否存在非·字符
  /[\.、。\.,,]{1,}/.test(_name)
  //非·的符号转化为·
  _name = _name.replace(/[\.、。\.,,]{1,}/g, '·');

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值