1

我有一个javascript函数,每26个字母后强制一个空格

function nospaces(t)    
{
    if(t.value.match(/\S{27}/g))
    {    
        //alert('Sorry, you can not enter a word more than 26 characters long');
        t.value[5]=t.value.replace(/\S{27}/g,'');
    }
}

现在我希望用户输入的每个第 27 个字母而不是空格应该替换为空格

4

3 回答 3

0

巧妙地使用正则表达式组,如果\S{26}后面\S跟着一个空格,则将整个匹配替换为第一个组,后面跟着一个空格;

var foo = 'abcdefghijklmnopqrstuvwxyzab'.replace(/(\S{26})(\S)/, '$1 '); 给出: abcdefghijklmnopqrstuvwxyz b

于 2012-07-18T11:48:57.747 回答
0

你可以这样做:

var string = 'abcdefghijklmnopqrstuvwxyz0abcdefghijklmnopqrstuvwxyz0hjh...'; 
// 0 is 27th
string = string.replace(/(\S{26})\S/g, '$1 ');

我不确定这是否是最佳做法,但它确实有效。

于 2012-07-18T11:49:12.477 回答
0
function nospaces(t)    
{
     return t.replace(/\S{27}(?=\S)/g, '$& ');
}

如果该序列后跟一个非空白字符,则将 27 个字符的序列替换为后跟一个空格的 27 个字符序列。

于 2012-07-18T11:49:15.863 回答