我有以下代码,在键入另一个字段时填充字段...
$('#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)
代码可以删除任何没有字母数字的字符,但我希望它用' - '破折号替换空格.
如果我将短划线更改为句号'.' 这项工作,不确定为什么或如何补救它?正则表达式让我困惑.
谁能指出我正确的方向?
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)
我建议使用此正则表达式而不是您拥有的第一个正则表达式/(^\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)
\s
表示whitespace (\n, \r, \t, \f, and " ")
正则表达式:
myStr=myStr.replace(/\s+/g, "-");
Run Code Online (Sandbox Code Playgroud)