为了账号安全,请及时绑定邮箱和手机立即绑定

仅当它之前有数值时才替换的正则表达式

仅当它之前有数值时才替换的正则表达式

白衣染霜花 2023-06-15 09:40:22
我想写一个正则表达式来用下划线替换x和值,只有当它被数字包围,或者前面或后面有数字时。X_xX例如:OFE_PALLET_120X92 will be OFE_PALLET_120_92OFX_PALLET_120X92 will be OFX_PALLET_120_92这是我的初始代码:sRegExInput = new RegExp('[xX]', 'g');result =    result.replace(sRegExInput ,'_');如何实现?
查看完整描述

3 回答

?
繁星coding

TA贡献1797条经验 获得超4个赞

\\d在构造函数中使用:


var result = 'OFE_PALLET_120X92 will be OFE_PALLET_120_92';

var sRegExInput = new RegExp('(\\d)x', 'gi');

result = result.replace(sRegExInput ,'$1_');

console.log(result);

解释


--------------------------------------------------------------------------------

  (                        group and capture to \1:

--------------------------------------------------------------------------------

    \d                       digits (0-9)

--------------------------------------------------------------------------------

  )                        end of \1

--------------------------------------------------------------------------------

  x                        'x' or 'X' due to i flag

指$1的是捕获的子串。


查看完整回答
反对 回复 2023-06-15
?
忽然笑

TA贡献1806条经验 获得超5个赞

您可以使用以下正则表达式:

"OFX_PALLET_120X92".replace(/(\d)x/ig, "$1_")
// "OFX_PALLET_120_92"

本质上,它找到一个数字,捕获它,然后找到一个X,并将其替换为捕获的数字 ( $1) 和一个下划线。


查看完整回答
反对 回复 2023-06-15
?
元芳怎么了

TA贡献1798条经验 获得超7个赞

使用提供的正则表达式,我将模式匹配为:

  1. 查找一位或多位数字,

  2. 后跟xX

  3. 后跟一位或多位数字。

然后在替换语句中,我使用$1来替换第一组找到的数字,并使用 来$3替换最后一组找到的数字。

变量map中的entries只是为了简化代码。这与正则表达式无关。

var entries = [

    'OFE_PALLET_120X92',

    'OFX_PALLET_120X92'

];


var result = entries.map(

    function(entry) {

        return entry.replace(/(\d+)([xX])(\d+)/g ,'$1_$3');

    }

);


console.log(result);

运行代码片段来测试输出:)



查看完整回答
反对 回复 2023-06-15
  • 3 回答
  • 0 关注
  • 101 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信