10

为什么我的 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();
        }
    });
4

8 回答 8

34

试试这个:

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

演示:JSFiddle

于 2013-01-02T11:13:06.900 回答
3

试试这个:

var str = 'a b c';
var replaced = str.split(' ').join('-');
于 2014-04-07T18:49:53.977 回答
2

它是:“如果(action.length >= 2 && query.length >= 2 && query.length <=24){”

不是:“如果(action.length >= 2 && query.length >= 2 && query.lenght <=24){”

于 2013-07-17T23:10:48.913 回答
1

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

query.replace(/\ /g, '-')
于 2013-01-02T11:11:23.057 回答
1

您可以尝试使用自定义功能

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)
于 2017-01-16T12:04:22.383 回答
0

试试这个

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

这仍然有效,以防您的查询是undefiniedNaN

于 2013-01-02T11:16:06.540 回答
0

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

query.replace(/\s/g, '_');
于 2013-01-02T11:20:13.890 回答
0

String.prototype.replace仅当第一个参数是字符串时才替换第一个。要替换所有匹配项,您需要传入一个全局正则表达式作为第一个参数。

replace

...

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

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

于 2013-07-17T23:14:29.100 回答