Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript正则表达式删除除-和æ之外的特殊字符øå;_Javascript_Regex - Fatal编程技术网

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

Javascript正则表达式删除除-和æ之外的特殊字符øå;,javascript,regex,Javascript,Regex,我明白了: var stringToReplace = 'æøasdasd\89-asdasd sse'; var desired = stringToReplace.replace(/[^\w\s]/gi, ''); alert(desired); 我从另一个SO问题中找到了替换规则 这工作正常,它提供输出: asdasd89asdasd sse 尽管我想制定其他规则: 保留字符 保留-字符 将空格/空格转换为-字符 因此,输出将是: æøåasdasd89-asdasd-sse 我知道

我明白了:

var stringToReplace = 'æøasdasd\89-asdasd sse';
var desired = stringToReplace.replace(/[^\w\s]/gi, '');
alert(desired);
我从另一个SO问题中找到了替换规则

这工作正常,它提供输出:

asdasd89asdasd sse
尽管我想制定其他规则:

  • 保留
    字符
  • 保留
    -
    字符
  • 将空格/空格转换为
    -
    字符
  • 因此,输出将是:

    æøåasdasd89-asdasd-sse
    
    我知道我可以多跑一条线: stringtoReplace.替换(“,-”)


    为了实现我的目标——但我不知道如何处理1和2),因为我不喜欢正则表达式?

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

    /[^\w\sæøå-]/gi
    
    玩弄榜样

    正如您所说,您可以使用另一个替换来用破折号替换空格,这应该可以:

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

    实时演示:您的原始正则表达式
    [^\w\s]
    以非单词或空格字符的任何字符为目标(
    -
    ,例如)。要在此正则表达式的“白名单”中包含其他字符,只需将它们添加到该字符组:

    stringToReplace.replace(/[^\w\sæøå-]/gi, '');
    
    至于用连字符替换空格,您不能在一个正则表达式中同时完成这两项工作。但是,您可以在事后使用字符串替换来解决这个问题

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

    谢谢你的回答。效果几乎很好。尝试使用此输入´æøasdasd\89 asdasd sse e a sd s´,它会将所有空格替换为-