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

时间:2014-03-12 17:21:23

标签: jquery regex

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

$('#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); 
});

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

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

JSFIDDLE here

有人能指出我正确的方向吗?

更新

根据需要使用此功能......

<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>

3 个答案:

答案 0 :(得分:8)

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

myStr=myStr.replace(/\s+/g, "-");

答案 1 :(得分:5)

我建议使用此正则表达式而不是您拥有/(^\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); 
});

jsfiddle

答案 2 :(得分:4)

您正在撤消自己的工作:

myStr=myStr.replace(/[^a-zA-Z0-9\.]+/g,""); //removes dashes (-)

将其更改为:

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

你说要删除任何不是字母,数字或.的内容(因此删除破折号)

只需在字符组中添加短划线/连字符即可将其排序