2010-04-08 93 views
2

如何找到下面的註釋塊(S)使用JavaScript/jQuery的正則表達式:的Javascript正則表達式問題

/* 

    some description here 

    */ 

它甚至可能看起來像:

/* some description here 
    */ 

或者

/* some description here */ 

回答

2

隨着PHP我認爲這應該是:

$pattern='/\/\*.*?/*///'; 

$ pattern ='/\*[^*]*\*+([^/*][^*]*\*+)*/';

CHK這一點

Improving/Fixing a Regex for C style block comments

這是匹配空註釋塊:

^\s+/\*{1,}\n(^\s*\*{1,}\s*)+\*{1,}/ 
+0

這並沒有考慮到回車或換行。我認爲提問者需要能夠用多行來檢測塊註釋。但是,它確實適用於單線運動員。 – 2010-04-08 14:54:02

+0

@Levi Hackwith它匹配他說的最後一個要求,或者沒有說AND:D – ant 2010-04-08 14:54:58

+0

這個問題沒有明確說出Javascript嗎? – Pointy 2010-04-08 15:08:39

1
var match = myString.match(/\/\*([\w\W]*)\*\//) 

如果match !== nullmatch[0]將包含評論,match[1]將包含無評論評論分隔符。

編輯:這是多現在;)

+0

使用'[d \ D]'而不是'.'。這將匹配換行符。至少它是這樣做的。NET =) – Jens 2010-04-08 15:05:18

+0

對,剛剛用\ w \ W發現它:) – Alsciende 2010-04-08 15:16:25

+0

不是「*」和「/」都不是單詞字符嗎?因此它們不會匹配「\ W」嗎?事實上,不是「[\ w \ W]」幾乎與「。」一樣嗎? – Pointy 2010-04-08 15:45:44

1

下面是一個實際的Javascript答案:

var commentRegex = /\/\*([^/]|\/[^*])*\*\//; 

如果需要檢查,看看一個整個串是否是註釋版本:

var completeCommentRegex = /^\/\*([^/]|\/[^*])*\*\/$/m; 

說明:正則表達式匹配前導/*,後跟任意數量的單個字符除「/」或「/」之外的任何其他字符都不是星號,然後最後關閉*/。第二個版本中的「m」標誌確保嵌入的換行符不會弄亂「^」和「$」錨點。

最後,如果你真的想要評論文字,你可以在那裏添加一個合適的括號內的塊(在/*之後和*/之前)。