使用JavaScript

时间:2017-11-09 13:53:24

标签: javascript regex

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

例如,从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()正则表达式可以实现吗?

到目前为止尝试过:

  • &#39; / \ d + /克&#39; - 但它删除了所有数字而没有别的
  • &#39; /(* | \ d + $)/&#39; - 但这对某些人来说并不是很有效,导致&#34; ROBLOX.COM 888-858 - &#34;

2 个答案:

答案 0 :(得分:2)

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

<强>演示

&#13;
&#13;
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" ) );
&#13;
&#13;
&#13;

答案 1 :(得分:0)

您可以使用.split(/\ |\*/)[0]分隔空格或*并返回第一份作品

var tests = ["MSFT *<E07004QY6W>",
  "WOOLWORTHS W1157",
  "GOOGLE*ADWS7924436927",
  "COLES 0829",
  "ROBLOX.COM 888-858-25",
  "7-ELEVEN 2179",
  "COLES EXPRESS 1896"
];

tests = tests.map(v => {
  return v.split(/(\s+\w+\d+|\*\S+)/)[0]
})

console.log(tests)