正则表达式在jQuery中用破折号替换空格
我有下面的代码,它在输入另一个字段时填充一个字段正则表达式在jQuery中用破折号替换空格,jquery,regex,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,""); mySt
$('#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);
});
该代码可以删除任何非字母数字字符,但我希望它用“-”破折号替换空格
如果我将破折号改为句号“.”,这是有效的,不知道为什么或如何补救?正则表达式使我困惑
谁能给我指出正确的方向吗
更新
只是用这个让它按要求工作
<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>
$('#title').bind('keyup keypress blur',function()
{
var myStr=$(this.val()
myStr=myStr.toLowerCase();
myStr=myStr.替换(/[^a-zA-Z0-9]+//g,”);
myStr=myStr.replace(/\s+/g,“-”);
$('#filename').val(myStr);
});
\s
在正则表达式中表示空白(\n、\r、\t、\f和“”)
:
myStr=myStr.replace(/\s+/g, "-");
您正在通过以下方式撤消自己的工作:
myStr=myStr.replace(/[^a-zA-Z0-9\.]+/g,""); //removes dashes (-)
将其更改为:
myStr=myStr.replace(/[^a-zA-Z0-9\.-]+/g,"");
你说删除任何不是字母、数字或
(因此删除破折号)的内容
只需在字符组中添加一个破折号/连字符,即可对其进行排序我建议使用此正则表达式,而不是使用第一个正则表达式(^\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);
});
可能的重复项不完全准确,
\s
表示空白。这也包括tab和newline之类的东西。只有空格是/
。请编辑您的答案以更正您的第一句话。正如@DaniëlKnippers所指出的,您目前提供的信息具有误导性