2013-03-14 69 views
1

我承認不是一個正則表達式的人,但通常我可以找到我的方式。這一個讓我難住...Javascript正則表達式我在努力

我需要匹配並替換一個大於str(>>),有一個可選的前導空間的雙倍。我知道這是行不通的,但沿線的東西...

/\s\s+[>>]/ 

但這顯然沒有好處。

希望有任何幫助。這個網站對我來說多年來一直是一個驚人的資源,我不能相信我現在只是想發佈一些東西,所以它甚至表明,即使像我這樣的關節頭已經能夠受益而不會打擾人們......直到現在:)在此先感謝。

+1

你想,如果發現它來代替可選的前導空格除了>>? – magritte 2013-03-14 21:37:08

回答

0

如果你想的空間是可選的,那麼你可以簡單地這樣做:

/>>/ 

而且你可以將其作爲與g修改替換模式:

str = str.replace(/>>/g, 'something') 

如果您想檢查一個字符串是否可能有一些空格,然後使用

/^\s?>>$/ 
+0

或簡單字符串替換 – 2013-03-14 21:37:40

+1

@WouterJ如果你想做多個替換,你必須使用正則表達式:'myString.replace(/ >>/g,'')' – 2013-03-14 21:38:22

+0

哦?我認爲'g'修飾符在匹配中只是有用的,而不是替換。 (在PHP中,所有替換將默認爲全局) – 2013-03-14 21:39:36

0

這個正則表達式應該可以工作。

/\s*[>]{2}/ 

這是清潔

/\s*>>/ 

測試:

var pattern = /\s*>>/; 
s1 = "    >>"; 
s2 = ">>"; 
s3 = ">> surrounding text"; 
s4 = "surrounding >> text"; 
s5 = "surrounding>>text"; 

s1.match(pattern); 
["    >>"] 
s2.match(pattern); 
[">>"] 
s3.match(pattern); 
[">>"] 
s4.match(pattern); 
[" >>"] 
s5.match(pattern); 
[">>"] 

更換例如

var pattern = /\s*>>/; 
var s6 = " >> surrounding text"; 
s6.replace(pattern, ">"); 
"> surrounding text" 
+2

爲什麼不使用'> {2}'? – 2013-03-14 21:37:11

+2

或者就是這個問題。 – Vulcan 2013-03-14 21:38:25

1

對於雙方>>在字符串中,並與領先的空白,嘗試:

/(\s*)(>>){1}/ 
+0

你可以使用/ >> /但我想上面的正則表達式使替換工作更容易。 – ericmux 2013-03-14 21:47:22

0

如果你想讓它的前導空格字符的無限量的匹配:

/ *>>/ 

如果你希望它匹配0或1領先的空格字符:

/ ?>>/ 
+1

'+'表示_one或more_,使用'?'表示_zero或one_。 – MikeM 2013-03-14 22:05:49

+0

@MikeM感謝捕捉,那是我的不好。 – user829323 2013-03-14 22:18:20

0

打破你的例如:

  1. \s將匹配任何白衣E-空格字符
  2. \s+將匹配一個或多個空格字符
  3. [>>]將匹配一個>(見本下文)

所以,你的表達將匹配>由至少兩個preceeded空白字符。

如果您想匹配零個或更多,您將不得不使用*; fex \s*

方括號用於表示字符集合,並將匹配集合中的任何字符; fex [abc]將與a,b或c匹配,但在時間只有一個字符。

正則表達式中的單個字符將匹配該字符; fex >將會匹配一個大於號的符號。

將其組合在一起,我們得到以下的正則表達式爲你的情況:

/\s*>>/ 
0

這應該與可選的空間工作。

/\s{0,}>>/g 

訪問此link測試比賽。

0

使用本:

str.replace(/\s+>>/g, 'whatever');