需要替换字符串中所有字符,但字符串开头(或单词的一部分)除外。

例如,从CSV文件读取的文本行:

MSFT *<E07004QY6W>
WOOLWORTHS W1157
GOOGLE*ADWS7924436927
COLES 0829
ROBLOX.COM 888-858-25
7-ELEVEN 2179
COLES EXPRESS 1896


结果应该是:

MSFT
WOOLWORTHS
GOOGLE
COLES
ROBLOX.COM
7-ELEVEN
COLES EXPRESS


JavaScript replace()正则表达式可以实现吗?

到目前为止已尝试:


'/ \ d + / g'-但它会删除所有数字而没有其他内容
'/(* | \ d + $)/'-但这在某些情况下不起作用,结果为“ ROBLOX.COM 888-858-”

最佳答案

尝试/(\s+(\S+\d+\S+)|\*\S+)/g

演示版



function replaceRegex( input )
{
  return input.replace( /(\s+(\S+\d+\S+)|\*\S+)/g, "" );
}

console.log( replaceRegex( "MSFT *<E07004QY6W>" ) );
console.log( replaceRegex( "WOOLWORTHS W1157" ) ); //output is WOOLWORTHS W1157 but it matches your rules
console.log( replaceRegex( "GOOGLE*ADWS7924436927" ) );
console.log( replaceRegex( "COLES 0829" ) );
console.log( replaceRegex( "7-ELEVEN 2179" ) );
console.log( replaceRegex( "COLES EXPRESS 1896" ) );

10-07 16:16