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

我想写一个正则表达式来用下划线替换x和值,只有当它被数字包围,或者前面或后面有数字时。X_xX


例如:


OFE_PALLET_120X92 will be OFE_PALLET_120_92

OFX_PALLET_120X92 will be OFX_PALLET_120_92

这是我的初始代码:


sRegExInput = new RegExp('[xX]', 'g');

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

如何实现?


白衣染霜花
浏览 111回答 3
3回答

繁星coding

\\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的是捕获的子串。

忽然笑

您可以使用以下正则表达式:"OFX_PALLET_120X92".replace(/(\d)x/ig, "$1_") // "OFX_PALLET_120_92"本质上,它找到一个数字,捕获它,然后找到一个X,并将其替换为捕获的数字 ( $1) 和一个下划线。

元芳怎么了

使用提供的正则表达式,我将模式匹配为:查找一位或多位数字,后跟x或X后跟一位或多位数字。然后在替换语句中,我使用$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);运行代码片段来测试输出:)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript