在文本输入字段中的keyup事件中,我尝试用连字符替换任何空格,前提是有另一个字符;基本上改变除尾随空格之外的所有空格:
$('#id').val().replace(/ /g, '-'); // Currently targets *all* spaces
According to regexr,以下内容应该有效:
/[ ](?!\s)/g
但它在实践中并不起作用,this fiddle证明了这一点。
解决这个问题的正确方法是什么,为什么regexr会给我一个假阳性?
答案 0 :(得分:1)
您需要在否定前瞻中添加$
。
\s(?!$)
OR
(?!$)
答案 1 :(得分:0)
您可以捕获尾随空格,然后最后附加
$('#id').val(function(_,val){
var trailSpaces = val.match(/\s+$/g)[0];
return val.replace(/ /g,"-") + trailSpaces;
});