求改一个身份证号正则(只显示第一位和最后一位)

'18位身份证号',replace(/\s/g, '').replace(/(?<=\d{1})\d{16}(?=\d{1})/,"****************");

只显示第一位和最后一位中间的全部替换成星号

期望得到这种形式: 1****************1

以上写法 在编辑器运行就会卡主 不知道为啥 这个需求还有其他的正则写法吗?

阅读 1.8k
2 个回答
const num = '123456789012345678';

const a = num.trim().split('');
const show = a[0] + '****************' + a[17];
// '1****************8'

想要的是这个吗

'130110199711111101X'.replace(/(\d{1})\d*(\d{1}|X|x)/, '$1****************$2')

// '1****************X'
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题