el表达式拼接字符串!

前端jsp页面接受后台的一个身份证号码的变量,userId,假设userId=1234567789012345678,关键是这个长度不固定,也就是说userId这个字符串的length不固定。要完成的任务是:讲倒数第五位到倒数第十位字符用'*'来替换。
ps:项目经理建议用el表达式来做,最好不用js代码。难点在于,怎么根据字符串的长度来截取字符串,也就是说,用el表达式,怎么在${fn:substring() }中嵌套&{fn:length()}

1、15位或18位,如果是15位,必需全是数字。
2、如果是18位,最后一位可以是数字或字母Xx,其余必需是数字。

/^(\d{15}$|^\d{18}$|^\d{17}(\d|X|x))$/

信息来源

可以先获取到倒数第五位到倒数第十位的字符串,然后将字符串用*****替换

替换有两种方法~要么在后台处理 要么前端js处理~

我觉得不能直接截取中间的替换,如果前五位或者后十位有跟中间要替换的字符串有相同的话,也会被替换掉。
可以将前五位字符串截取为str1,将最后的十位以外的字符创截取为str2,然后重新拼接userId=str1 + “*” + str2