簡體   English   中英

Javascript正則表達式匹配除了雙空格然后替換的所有內容

[英]Javascript Regex match everything except double spaces then replace

我需要一個正則表達式,它將匹配除空格之外的任何內容或僅在雙空格之間的單詞。

喜歡 :

讓我們假設underscores等於spaces ,例如。

foo_bar__The_Quick_Dog__is_addicted_to___jumping___

然后用任何symbol replace spaces ,最好是Comma (,)

所以我們應該有: foo bar,The Quick Dog,沉迷於,跳躍。

然而, 跳躍這個詞不應該用comma替換它的白色空格,因為它在最后...添加一個comma將是無意義的

我試過了:

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

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

\s\s.*[a-z]

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

還有幾百......還是沒有好處。

謝謝

所以你的意思是這樣的?

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."

“逗號空格”替換多個空格,然后分別用“全停止新行”“句號結束”替換“逗號空格新行”“逗號空格結束”

使用替換器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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM