1

我懂了:

var stringToReplace = 'æøasdasd\89-asdasd sse';
var desired = stringToReplace.replace(/[^\w\s]/gi, '');
alert(desired);

我从另一个 SO question 中找到了替换规则。

这很好用,它给出了输出:

asdasd89asdasd sse

虽然我想设置额外的规则:

  1. 保留æøå字符
  2. 保持-性格
  3. 将空白/空格转换为-字符

所以输出将是:

æøåasdasd89-asdasd-sse

我知道我可以多跑一行:stringtoReplace.replace(' ', '-');

完成我的 3) 目标 - 但我不知道如何处理 1 和 2),因为我不喜欢正则表达式?

4

3 回答 3

2

这应该有效:

str = str.replace(/[^æøå\w -]+/g, '').replace(/ +/g, '-');

现场演示:http: //ideone.com/d60qrX

于 2013-10-28T20:34:16.773 回答
1

您可以将特殊字符添加到排除列表中。

/[^\w\sæøå-]/gi

在这里摆弄示例。

正如你所说 - 你可以使用另一个替换用破折号替换空格

于 2013-10-28T20:34:01.263 回答
0

您的原始正则表达式[^\w\s]针对任何不是单词或空白字符(-例如)的字符。要在此正则表达式的“白名单”中包含其他字符,只需将它们添加到该字符组:

stringToReplace.replace(/[^\w\sæøå-]/gi, '');

至于用连字符替换空格,您不能在单个正则表达式中同时执行这两项操作。但是,您可以在之后使用字符串替换来解决这个问题。

stringToReplace.replace(" ","-"); 
于 2013-10-28T20:35:22.700 回答