js中replace()方法如何匹配最后一个符合条件的字符并替换

想显示的样式:

  • 前缀_div框_后缀

前缀值data:

  businessPrefixE:'inc_',//前缀
  suffixE:'_flag'//后缀

ant-design-vue中设置a-input的前缀和后缀,因为ant-design中的a-input前缀参数不能自动追加_来拼接,那我们就传值的时候自己加_。

                   
                      
                     

自定义词根校验组件设置前缀后缀:自定义组件我开发的时候只考虑了传入前缀,组件内部如果传入了前缀就自动给它拼个_来连接,这里是与a-input的差别所在。

因为两者公用的一个前缀,那么传到自定义组件内部的前缀值就需要在传入之前把最后一个_去掉,否则就会显示成了'前缀__',显示成了两个下划线。

  • 使用replace替换,会把第一个给替换掉,如果前缀只有一个就没问题
:rootPre='businessPrefixE.replace("_","")' 
// 例如: inc_ ==> inc
  • 但如果包含了多个下划线,就会显示错误
//例如:            inc_accept_ ==> incaccept_
//实际想要的应该是:inc_accept_ ==> inc_accept

解决1:replace使用正则,把最后一个匹配到的_给替换为空

:rootPre='businessPrefixE.replace(/(.*)_/,"$1")'
  • 说明:
    参数1:正则表达式,要匹配什么字符,/(.*)+这里写要匹配的字符/,代表最后一个匹配到的字符。注:如果参数1是个普通字符串,那它就取到的是第一个匹配到的字符。
    参数2:要替换成什么字符,"$1+要替换成什么字符",如果要替换成空(去掉的意思,不是替换成空格)就写成"$1"什么也不用加。如果写成"$1 ",就会替换成一个空格。
                 

解决2:就是字符串截取,去掉最后一位

let pre = 'inc_accept_';
let pre2 = pre.slice(0, pre.length-1);

最好判断下最后一位是_才截取

let pre3 = pre.slice(pre.length-1)=='_'?pre.slice(0, pre.length-1):pre;

你可能感兴趣的:(js中replace()方法如何匹配最后一个符合条件的字符并替换)