2016-04-27 70 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)