我很新的正則表達式,我試圖消除所有文字括號外只保留括號內的一切。如何更換或刪除所有文本字符串括號外的JavaScript
對於實施例1,
Hello,this_isLuxy.(example)
這樣:
(example)
實施例2:
luxySO_i
:週期
luxySO_i.example
此後除去一切10
使用JS +正則表達式?非常感謝!
我很新的正則表達式,我試圖消除所有文字括號外只保留括號內的一切。如何更換或刪除所有文本字符串括號外的JavaScript
對於實施例1,
Hello,this_isLuxy.(example)
這樣:
(example)
實施例2:
luxySO_i
:週期
luxySO_i.example
此後除去一切10
使用JS +正則表達式?非常感謝!
對於這個簡單的字符串,你可以使用indexOf
和substring
功能:
var openParenthesisIndex = str.indexOf('(');
var closedParenthesisIndex = str.indexOf(')', openParenthesisIndex);
var result = str.substring(openParenthesisIndex, closedParenthesisIndex + 1);
好吧,如果你想使用正則表達式,那麼這將是一個有點複雜。不管怎麼說,在這裏你去:
var str = "Hello,this_(isL)uxy.(example) asd (todo)";
var result = str.replace(/[^()](?=([^()]*\([^()]*\))*[^()]*$)/g, '');
console.log(result); // "(isL)(example)(todo)"
總之,這將替換任何非()
字符,其後是零個或多個平衡括號。但嵌套或非平衡括號會失敗。
只保留在括號內可以使用
s.replace(/.*?(\([^)]*\)).*?/g, "$1")
意義的事情是:
.*?
任何字符(但最短的序列)\(
一個開括號中的任意序列[^)]*
零個或多個字符是不是一個封閉的括號\)
右括號.*?
任何字符(但最短的)的任何序列中間的三個要素是什麼,使用分組(...)
和$1
保持。
要刪除先內後外的一切表達的無非是:
s.replace(/\..*/, "")
含義:
\.
點字符(.
是特殊的,否則將意味着 「任何字符」).*
任何字符的任何序列(即一切直到字符串的結尾)用空字符串替換它
感謝您的詳細說明。我試了兩個例子。對於第一個例子,只保留圓括號內的東西,正則表達式的工作原理和它打印括號內的所有內容。但它以這種格式打印「(isL)(example)(todo)」。我想打破每個括號並將其作爲列表以換行符形式打印。第二個示例是,在第一個時間段後刪除所有內容,它會在第一個時間段後刪除所有內容。在這種情況下,我也有一個列表格式,看起來像這個m_name.Luxy,myname.Luxy等,我想從每一行中刪除週期。這是否也可以從上述正則表達式? – luxy
@ rohit's regex「str.replace(/ [^()] +(?=([^()] * \([^()] * \))* [^()] * $)/ g,' ');當括號爲這個時,效果很好:(isL)(example)(todo)「。假設那些圓括號都是圓點,我如何用空格替換點。我真的很感謝這個正則表達式的幫助,因爲我對它很陌生。謝謝 – luxy
非常感謝羅希特。我想使用正則表達式來達到一致性的目的。如果這可以使用正則表達式解決這將是很好的。 – luxy
@luxy添加了基於正則表達式的解決方案,如果它適合您:) –
謝謝limekin和rohit。 Rohit,我試過你的正則表達式,它工作得很好。然而,是否有辦法在另一個 – luxy