2016-11-09 48 views
2

是否有一個很好的RegExp用於將一個字符串中的兩個或更多個垂直條字符(「||」)替換爲一個垂直條(「|」)?我正在使用AngularJS 1.5.7。 $ scope.outputValue是我轉換爲字符串,並隨後實施2個不同的正則表達式的數組:刪除JS字符串中的連續垂直條

$scope.outputValue =  $scope.outputValue.toString(); 
$scope.outputValue =  $scope.outputValue.replace(/,/g, "|"); 
$scope.outputValue =  $scope.outputValue.replace(/[\s,]+/g, ' '); 

問題是,根據用戶輸入一個textarea內的,我的陣列給出了類似的結果,如這些(複製垂直pipebar分隔符):

$scope.outputValue = ["one" | "two" | "three" ||| "four" || "five" ]; 

,它應該是這樣的:

$scope.outputValue = ["one" | "two" | "three" | "four" | "five" ]; 

感謝,內納德

+1

'.replace(/ \ /克, '|' )' – Tibrogargan

+0

順便說一句。 '[「one」| 「兩個」| 「三」||| 「四」|| 「five」]'無效JavaScript – Tibrogargan

+0

@Tibrogargan我不認爲這樣做會達到目的;當有兩個以上的管道時,會留下額外的'|'。 –

回答

0

使用+量詞。閱讀它作爲「一個或多個」。它匹配和減少序列,像擠壓多個空間,在那裏你會經常看到這樣的事情是偉大的:| \ |

console.log('foo|bar||baz|||quux||||norf|||||'.replace(/\|+/g, '|'))

+0

我相信適當的metasyntactic變量將是plugh,然後xyzzy:D(嗯,雖然https://gist.github.com/hail2u/6561431不同意我:( –

+0

@DaveNewton哇,這很好,我以前沒有見過這些用過的大部分,我一直在被動地收集它們,因爲它們非常有用,但我並不真正意識到它有多特別,親愛的他們對我來說,我宣稱「asdf」是該集合中的一個非常大的成員<3 asdf ||||||||||||||||||||||||||||||||||||||||| |||||||||||||||||||||||||||||||||||||||||||||||||| |||||||||||||||||||||||||||||||||||||||||||||||||| |||||||||||||||||||||||||||||||||||||||||||||||||| |||||||||||||||||||||||||||||||||||||||||||||||||| |||||||||||||||||||||||||||||||||||||||||||||||||| |||||||||||||||||||||||||||||||||||||||||||||||||| | –

+0

因爲我不打算提出這個問題,你們可以簡單地告訴我爲什麼是錯綜複雜的變量對你如此重要? :p我從來沒有使用它我沒有達到目的,即使我閱讀維基百科文章。它只是佔位符的權利?你最好使用真正的變量名稱哈哈! – antoni