正则表达式用jQuery中的破折号替换空间

7 regex jquery

我有以下代码,在键入另一个字段时填充字段...

$('#title').bind('keyup keypress blur', function() 
{  

    var myStr = $(this).val()
        myStr=myStr.toLowerCase();
        myStr=myStr.replace(/ /g,"-");
        myStr=myStr.replace(/[^a-zA-Z0-9\.]+/g,"");
        myStr=myStr.replace(/\.+/g, "-");


    $('#filename').val(myStr); 
});
Run Code Online (Sandbox Code Playgroud)

代码可以删除任何没有字母数字的字符,但我希望它用' - '破折号替换空格.

如果我将短划线更改为句号'.' 这项工作,不确定为什么或如何补救它?正则表达式让我困惑.

JSFIDDLE在这里

谁能指出我正确的方向?

UPDATE

只是按照要求使用它...

<script>
$('#title').bind('keyup keypress blur', function() 
{  

    var myStr = $(this).val()
        myStr=myStr.toLowerCase();
        myStr=myStr.replace(/[^a-zA-Z0-9 ]+/g,"");
        myStr=myStr.replace(/\s+/g, "-");


    $('#filename').val(myStr); 
});
</script>
Run Code Online (Sandbox Code Playgroud)

imt*_*man 9

我建议使用此正则表达式而不是您拥有的第一个正则表达式/(^\s+|[^a-zA-Z0-9 ]+|\s+$)/g.它将防止在字符串的开头和结尾添加破折号,以防用户意外地在那里添加空格.

$('#title').bind('keyup keypress blur', function() 
{  

    var myStr = $(this).val()
    myStr=myStr.toLowerCase();
    myStr=myStr.replace(/(^\s+|[^a-zA-Z0-9 ]+|\s+$)/g,"");   //this one
    myStr=myStr.replace(/\s+/g, "-");


    $('#filename').val(myStr); 
});
Run Code Online (Sandbox Code Playgroud)

的jsfiddle


Sab*_*san 7

\s表示whitespace (\n, \r, \t, \f, and " ")正则表达式:

myStr=myStr.replace(/\s+/g, "-");
Run Code Online (Sandbox Code Playgroud)

  • 这不完全准确,`\ s`表示空白.这包括tab和newline之类的东西.只有空格才是`/ /`. (5认同)
  • 谢谢.我已经更新了我的答案. (2认同)