2013-10-04 18 views
1

我需要一个正则表达式来匹配除白色空格之外的任何内容,或者只匹配双空格之间的单词。Javascript正则表达式匹配除双空格之外的所有内容,然后替换

像:

让我们假设underscores哪里等于spaces只是举例。

foo_bar__The_Quick_Dog__is_addicted_to___jumping___

然后replacespaces与任何symbol,优选Comma (,)

所以我们应该有:foo吧,快狗,沉迷于跳跃。

然而,这个词跳跃不应该有它与comma代替空格,因为它是在最后...添加comma到这将是毫无意义的

我想:

/\(\s*([^)]+?)\s*\)/ 

and

[a-z].\s{2,}.* 

and

\s\s.*[a-z] 

(?:[a-zA-Z0-9]+[ ])+[a-zA-Z0-9]+ 

和几百更多...还是不行。

感谢

+0

我很困惑有一个''Coma'后沉迷to',但只'to'和'jumping'之间有一个空格 你能试着澄清一下吗? –

+0

对不起编辑... – ErickBest

回答

2

所以你的意思是这样吗?

var str = 'foo bar The Quick Dog is addicted to jumping '; 
str.replace(/\s\s+/g, ', ').replace(/, (\n|$)/g, '.$1'); 
"foo bar, The Quick Dog, is addicted to, jumping." 

更换多空间与“逗号分隔”,然后更换“逗号分隔的新线”“逗号分隔的结束”“完全停止新线”“全停止结束“,分别。

+0

令人惊叹!请你能解释这部分吗?'(\ n | $)/ g' – ErickBest

+0

'(\ n | $)'在捕获组中是_“新行”或“结尾”_。 '/'结束模式,'g'是_global_标志。 –

+0

作品像VOODOO!这是超级好,我欠你一个汉堡:) – ErickBest

1

使用代用品(mdn doc):

var s = 'foo bar The Quick Dog is addicted to jumping '; 
s.replace(/ {2,}(.)?/g, function (m, p) { return p ? ', ' + p : '.'; }); 
// prints "foo bar, The Quick Dog, is addicted to jumping." 

match使用+ join。这其中也修剪了领先的空格:

var s = ' foo bar The Quick Dog is addicted to jumping '; 
var m = s.match(/[^ ]+([^ ]+)*/g); 
m && (m.join(', ') + '.'); // null OR join() 
// prints "foo bar, The Quick Dog, is addicted to jumping." 

match + join在函数内部:

function fix(str, separator) { 
    var m = str.match(/[^ ]+([^ ]+)*/g); 
    return m && (m.join(separator || ', ') + '.'); 
} 

var s = ' ab cd ef gh '; 
fix(s); // "ab cd, ef, gh." 
fix(s, ' - '); // "ab cd - ef - gh." 
fix(' '); // null 
+0

Thax man ..尽管@Paul S.的解决方案确实运行良好,因为它在结尾处奇迹般地增加了整个停顿,同时它修剪了尾随的白色空间。那就是我真正想要的。 – ErickBest

+0

@ErickBest完成:) – leaf

+0

Thax一百万...你能解释一下'function'中的两个参数代表什么? 'm'和'p' ...? – ErickBest

相关问题