0
問題:我試圖在代碼標籤的內容中設置某些關鍵字的風格(例如「函數」),從出現的C風格註釋中排除這些關鍵字在那個內容中。 解決方案:我相信,將代碼標記的innerHTML字符串與正則表達式匹配,即排除C風格的註釋可以完成這項工作...Javascript正則表達式 - 捕捉除C風格評論以外的所有內容
有什麼建議嗎?
問題:我試圖在代碼標籤的內容中設置某些關鍵字的風格(例如「函數」),從出現的C風格註釋中排除這些關鍵字在那個內容中。 解決方案:我相信,將代碼標記的innerHTML字符串與正則表達式匹配,即排除C風格的註釋可以完成這項工作...Javascript正則表達式 - 捕捉除C風格評論以外的所有內容
有什麼建議嗎?
C樣式的註釋可以嵌套,因此不適合正則表達式。
匹配一個嵌套的C風格註釋很簡單:
/\*.*?\*/
允許的嵌套結果一層:
/\*(?:(?!\*/|/\*).)*+(?:/\*(?:(?!\*/|/\*).)*+\*/(?:(?!\*/|/\*).)*+)*+.*?\*/
(從RegexBuddy的庫中提取的)。試着想象如果你允許更多的話會發生什麼。
我將你的問題理解爲「正則表達式是否可以匹配C風格註釋之外的文本塊?」 - 這會比這更復雜。想象一下像"This is used to start a C comment: /*"
這樣的字符串。此外,如果您仍然想嘗試此操作,那麼您需要向後看哪些JavaScript不支持。
等等...你想用正則表達式解析(內部)HTML嗎?這是否對重要/安全至關重要? – 2010-02-09 10:07:52
看看http://alexgorbatchev.com/wiki/SyntaxHighlighter,看看他們是如何做到的 – AutomatedTester 2010-02-09 10:09:53