正则表达式删除所有非字母数字并用+替换空格

sgr*_*ipt 7 javascript regex

我正在寻找使用正则表达式尝试从字符串中删除所有非字母数字字符并用+替换空格

我想要允许的只是字母词AZ和+

这是专门准备字符串成为URL的一部分,因此需要+符号而不是空格.

我看过/\W+/这会删除所有空格和字母数字字符,而我想留下空格,如果可能,然后用+符号替换.

我已经搜索了一下,但我似乎无法找到一些东西,我希望有人可能对此有任何简单的建议.

样本字符串和所需结果: Durarara!!x2 Ten - > durarara + x2 + ten

Pau*_*oub 35

这实际上相当简单.

假设str你正在清理字符串:

str = str.replace(/[^a-z0-9+]+/gi, '+');
Run Code Online (Sandbox Code Playgroud)

^意思是"没有任何字符名单".所述+[...]组的意思是"一个或多个"./gi意思是"替换所有这些,而不考虑案例".

因此,任何不是字母,数字或"+"的字符都将被转换为单个"+".

要删除带括号的子字符串(根据注释中的请求),请先执行此替换:

str = str.replace(/\(.+?\)/g, '');
Run Code Online (Sandbox Code Playgroud)

function replacer() {

  var str = document.getElementById('before').value.
    replace(/\(.+?\)/g, '').
    replace(/[^a-z0-9+]+/gi, '+');

  document.getElementById('after').value = str;
}

document.getElementById('replacem').onclick = replacer;
Run Code Online (Sandbox Code Playgroud)
<p>Before:
  <input id="before" value="Durarara!!x2 Ten" />
</p>

<p>
  <input type="button" value="replace" id="replacem" />
</p>

<p>After:
  <input id="after" value="" readonly />
</p>
Run Code Online (Sandbox Code Playgroud)