jQuery replace未完全替换所有空格为“-”。

11

为什么我的 jQuery 没有用 '-' 替换所有空格。它只会将第一个空格替换为 '-'

$('.modhForm').submit(function(event) {

        var $this = $(this),
            action = $this.attr('action'),
            query = $this.find('.topsearchbar').val(); // Use val() instead of attr('value').

        if (action.length >= 2 && query.length >= 2 && query.lenght <=24) {

          // Use URI encoding
          var newAction = (action + '/' + query.replace(' ','-'));
          console.log('OK', newAction); // DEBUG

          // Change action attribute
          $this.attr('action', newAction);

        } else {
          console.log('To small to be any good'); // DEBUG

          // Do not submit the form
          event.preventDefault();
        }
    });

String.replace -- 请参考该页面上的第二个示例。 - Salman A
这是一个大问题,replaceAll 在所有情况下都不起作用。JS 和 JQuery 真是一坨屎。 - Ejrr1085
8个回答

32

使用这个试试:

.replace(/\s/g,"-");

演示:JSFiddle


@Norman 你用的是哪个浏览器?jsFiddle演示在我的Firefox 17.0.1中可以正常工作。 - Anthony Grist
1
这在 jsfiddle 中运行良好,所以它并没有错。可能存在一些浏览器兼容性问题。@Norman - Vishal Suthar
我已经更新了你的fiddle。你能看一下吗?我正在使用Firefox 14.0.1。 - Norman
在哪里看?我没有发现对我的回答进行任何编辑..@Norman - Vishal Suthar
好的,可能是浏览器问题。我更新了我的回答。@Norman - Vishal Suthar

3

试试这个:

var str = 'a b c';
var replaced = str.split(' ').join('-');

2

这段代码是:“如果 (动作长度大于等于2且查询长度大于等于2且查询长度小于等于24) {”

不要写成:“如果 (动作长度大于等于2且查询长度大于等于2且查询lenght小于等于24) {”


0

试试这个

query.replace(/ +(?= )/g,'-');

如果您的查询是undefiniedNaN,这仍然有效。


0

String.prototype.replace 只会替换第一个匹配项,当第一个参数是字符串时。如果要替换所有出现的匹配项,需要将全局正则表达式作为第一个参数传递。

replace

...

要执行全局搜索和替换,请在正则表达式中包含 g 开关,或者如果第一个参数是字符串,则在 flags 参数中包含 g。

其他人已经展示了一些适用于不同“空格”定义的正则表达式。


0

使用正则表达式替换所有出现的内容:

query.replace(/\ /g, '-')

0

你可以尝试使用自定义函数

String.prototype.replaceAll = function (searchText, replacementText) {
    return this.split(searchText).join(replacementText);
};
var text = "This is Sample Text";
text.replaceAll(" ", "-");
//final output(This-is-Sample-Text)

你在开玩笑吗?Javascript和Jquery没有基本的字符串函数。我不明白为什么它被认为是一种伟大的编程语言。 - Ejrr1085

-1

替换所有空格(包括制表符、空格等):

query.replace(/\s/g, '_');

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接