我有以下代码,在输入另一个字段时填充字段...
$('#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>
答案 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);
});
答案 2 :(得分:4)
您正在撤消自己的工作:
myStr=myStr.replace(/[^a-zA-Z0-9\.]+/g,""); //removes dashes (-)
将其更改为:
myStr=myStr.replace(/[^a-zA-Z0-9\.-]+/g,"");
你说要删除任何不是字母,数字或.
的内容(因此删除破折号)
只需在字符组中添加短划线/连字符即可将其排序