Javascript正则表达式除了 - 和æøå之外删除了特殊字符

时间:2013-10-28 20:29:48

标签: javascript regex

我明白了:

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

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

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

asdasd89asdasd sse

虽然我想设置其他规则:

  1. 保留æøå个字符
  2. 保留-字符
  3. 将空格/空格转换为-字符
  4. 所以输出结果为:

    æøåasdasd89-asdasd-sse
    

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

    实现我的目标 - 但我不知道如何处理1和2),因为我没有进入正则表达式?

3 个答案:

答案 0 :(得分:2)

这应该有效:

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

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

答案 1 :(得分:1)

您只需将特殊字符添加到排除列表即可。

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

摆弄示例here

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

答案 2 :(得分:0)

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

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

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

stringToReplace.replace(" ","-");