2016-04-27 121 views
1

我具有正則表達式:的Javascript正則表達式忽略空行/雙倍間距

var regex = /^\([A-Z])+\).+/g; 

當我運行regex.test(paragraph)其中paragraph具有以下:

(A)試驗

(B)測試

(C)測試

由於它們是空白的,所以在第二行和第四行出現了問題。在這種情況下,我想要做的就是.test()返回true,這裏有空行。基本上,如果一行中有任何內容,它必須以括號中至少包含一個大寫字母開頭。

我試圖使用可選的非捕獲組,但似乎也未能:

var regex = /^(?:\([A-Z]+\).+)?/g; 

需要什麼樣的正則表達式來做到這一點,還是我更好地打破了paragraph變量與.split('\n'),並循環檢查?

+0

** [this](https://regex101.com/r/iU0jC7/1)** – rock321987

+0

'/ ^(\([AZ] + \)。+)?$/gm'確保使用m '(MULTILINE)flag – anubhava

+0

請勿使用帶'/ g'修飾符的正則表達式來使用'RegExp#test()',將其刪除。請參閱[本演示](https://jsfiddle.net/o0ez6ckL/1/)。 –

回答

1

此正則表達式將滿足您的要求

^\([A-Z]+\)|^\s*$ 

Regex Demo

JS演示

var re = /^(\([A-Z]+\).+)?$/gm; 
 
var str = '(A) Test\n\n(B) Testing\n\n(C) Tested'; 
 
var m = str.match(re); 
 
document.writeln(m)