正则表达式匹配除字符串末尾之外的所有空格

时间:2015-01-26 13:41:23

标签: regex

在文本输入字段中的keyup事件中,我尝试用连字符替换任何空格,前提是有另一个字符;基本上改变除尾随空格之外的所有空格:

$('#id').val().replace(/ /g, '-');  // Currently targets *all* spaces

According to regexr,以下内容应该有效:

/[ ](?!\s)/g

但它在实践中并不起作用,this fiddle证明了这一点。

解决这个问题的正确方法是什么,为什么regexr会给我一个假阳性?

2 个答案:

答案 0 :(得分:1)

您需要在否定前瞻中添加$

\s(?!$)

OR

 (?!$)

答案 1 :(得分:0)

您可以捕获尾随空格,然后最后附加

$('#id').val(function(_,val){
    var trailSpaces = val.match(/\s+$/g)[0];
    return val.replace(/ /g,"-") + trailSpaces;
});