2010-05-31 41 views
3

說一個字符串是abc/xyz/IMPORTANT/DATA/@#!%@!%,而我只想IMPORTANT/DATA/!%#@%!#%如何使用正則表達式從字符串中去除[a-z]/[a-z] /?

我在正則表達式可怕,真的還沒有學會的JavaScript API還

+0

所以你想在最後一個斜槓後的一切? – 2010-05-31 16:34:24

+0

我剛回去重新澄清。 – 2010-05-31 16:36:34

+0

'FOO/bar/baz/QUUX'? – kennytm 2010-05-31 16:38:09

回答

1

如果文本總是喜歡當前的例子中,你也許能只需使用substringindexOf即可從第二次出現「/」開始剪切它。

否則/([^\/]+\/[^\/]+\/)/,或布萊爾的答案可能是一個很好的正則表達式使用。 或/^([^\/]+\/[^\/]+\/)/如果它必須從字符串的開始處開始。

+0

我打算查看子字符串IndexOF,聽起來像我需要的良好性能。 – 2010-05-31 16:37:53

+0

是的,性能明智,這是一個更好的選擇。 – CharlesLeaf 2010-05-31 16:39:16

1

我覺得

yourstring.replace(/[a-z]+\/[a-z]+\/(.+)/g, "$1"); 
2

使用indexOfsubstring。你不需要這樣的正則表達式。

您可以使用start參數到indexOf從給定的位置進行搜索。如果您在第一個/之後搜索,則可以找到第二個/的索引。

s = "abc/def/ghi/jkl"; 
s = s.substring(s.indexOf('/', s.indexOf('/') + 1) + 1); 
document.writeln(s); // "ghi/jkl" 

注意,這個假設總是會有至少兩個/。如果沒有,這將保持s原樣。

s = "abc/xyz"; 
s = s.substring(s.indexOf('/', s.indexOf('/') + 1) + 1); 
document.writeln(s); // "abc/xyz" 

如果你一定要使用正則表達式,它是這樣的:

s = "abc/def/ghi/jkl"; 
s = s.replace(/[a-z]+\/[a-z]+\//, ''); 
document.writeln(s); // "ghi/jkl" 

同樣,這種假設總是會有至少兩個/

相關問題