Javascript 保留所有字母和数字字符,并将空格转换为-

Javascript 保留所有字母和数字字符,并将空格转换为-,javascript,regex,Javascript,Regex,我想做的是: 拿绳子 删除任何非字母和数字字符 我还试图把任何空白变成一个-,(多个空白变成一个-) 把所有的字母都改成小写 这样做的原因是从用户输入生成友好的URL 到目前为止,我只有这些了 var str = "This is a really bad Url _, *7% !"; result1 = str.replace(/\s+/g, '-').toLowerCase(); alert(result1); 你可以这样做 var output=input.replace(/[^

我想做的是: 拿绳子

  • 删除任何非字母和数字字符
  • 我还试图把任何空白变成一个-,(多个空白变成一个-)
  • 把所有的字母都改成小写
  • 这样做的原因是从用户输入生成友好的URL

    到目前为止,我只有这些了

    var str = "This is    a really bad Url _, *7% !";
    result1 = str.replace(/\s+/g, '-').toLowerCase();
    alert(result1); 
    
    你可以这样做

    var output=input.replace(/[^A-Za-z\d\s]+/g,"").replace(/\s+/g," ").toLowerCase();
    

    我只想扩展一下您已经得到的内容:首先将空格转换为连字符,然后用空字符串替换除字母、数字和连字符以外的所有内容,最后转换为小写:

    var str = "This is    a really bad Url _, *7% !";
    result1 = str.replace(/\s+/g, '-').replace(/[^a-zA-Z\d-]/g, '').toLowerCase();
    alert(result1);
    
    您还需要考虑如何处理字符串中的初始连字符('-')。我上面的代码将保留它们。如果还希望删除它们,则将第二行更改为

    result1 = str.replace(/[^A-Za-z\d\s]/g, '').replace(/\s+/g, '-').toLowerCase();
    

    这可以奏效

    var str = "This is    a really bad Url _, *7% !";
    result1 = str.replace(/[^a-zA-Z0-9\s]/g, '') // Remove non alphanum except whitespace
                 .replace(/^\s+|\s+$/, '')      // Remove leading and trailing whitespace
                 .replace(/\s+/g, '-')          // Replace (multiple) whitespaces with a dash
                 .toLowerCase();
    alert(result1); 
    
    结果:

    this-is-a-really-bad-url-7
    

    我看了所有这些,有些遗漏了一些东西

    var stripped = string.toLowerCase() // first lowercase for it to be easier
                .replace(/^\s+|\s+$/, '') // THEN leading and trailing whitespace. We do not want "hello-world-"
                .replace(/\s+/g, '-') // THEN replace spaces with -
                .replace(/[^a-z0-9-\s]/g, '');// Lastly
    

    在这种情况下,所需的输出是
    “this-is-a-really-bad-url-7-”
    ?好的,那么您有很多答案可供选择^^^^^哇,这很快,谢谢。我该怎么做才能删除下划线呢?这不会取代Anirudh好的,你可以用
    A-Za-z
    替换
    \w
    -我更新了与我的解决方案完全相似的答案..除了
    alet
    ..:p真的,我想我会删除我的答案,你先回答了我没有麻烦,因为输入可能是一个标题,但你是对的,这样更安全。编辑!str.replace(/[^a-zA-Z0-9\s]/g',)将在它到达之前替换空格。replace(/\s+//g',-')我在项目上使用的内容:var stripped=string.toLowerCase()。replace(/^\s+\s+$/,'')。replace(/\s+//g',-')。replace(/[^a-Z0 9-/g',);
    var stripped = string.toLowerCase() // first lowercase for it to be easier
                .replace(/^\s+|\s+$/, '') // THEN leading and trailing whitespace. We do not want "hello-world-"
                .replace(/\s+/g, '-') // THEN replace spaces with -
                .replace(/[^a-z0-9-\s]/g, '');// Lastly