2016-03-14 90 views
2

验证用户输入时,我使用正则表达式来检查每行的开头(实际上包含的内容是否会跳过双空格),总会有一个在任何其他字符之前设置括号内的内容。有多种变化左右摆弄之后,这里就是我想出的最简单的版本,没有检查每行的第一个单词是否包含特定字符

var regex = new RegExp('^\\([^)]+\\).*?$', 'm'); 

预期的结果是再次进行测试,如情况属实:

(测试)的任何\ N(另一个测试)再次...无论

(测试)whateve河\ n \ n(另一个测试)再次...无论

如果字符串中的任何行不以(开始,有括号内的至少一个字符,然后由)面前关闭括号后的任何数量的内容,都应该失败;唉,我上面的表达会忽略任何检查第一行的任何行。如果我的格式不正确,例如(test) whatever\nthis) should return false,它仍会在.test()上返回true。

一些有效的匹配可能包括:

(测试)通过

(测试)合格\ n(也)通过

(再次)通过\ n \ n(也)通\ n(我们)可以整天这样做

(There)可以\ n(是)\ n(新行)的任何\ n(金额)为\ n \ n \ n \ n(长)每个\ n(行)有\ n(内容)开始\ n(带有一套)括号。 \ n(有)\ n(有)\ n(有)唯一的\ n(例外)是\ n(严格执行)的\ n(不是)\ n(不)打开和关闭括号)在每行

,应该在一个.test()返回false一些无效的比赛开始时包括:

都能跟得上

也都能跟得上

(无右括号=都能跟得上

都能跟得上对于上述对面)

(没错至今)实际上.... \ nNope

\ n个大碗(没了!)

)猜测?

()否良好

+1

也许'/^(?:\([^)]+\).*[\r\n]*)+ $ /'?或['/^\([^)]+\).*(?:[\r\n]+\([^)]+\).*)*$/'](https://regex101。 COM/R/cP4zW7/1)。我建议使用文字正则表示法。 –

+1

还是你的意思['^(?!\([^)] + \))。*'](https://regex101.com/r/cP4zW7/2)? –

+1

添加了一些通过/失败的例子。 – Scott

回答

1

为了验证每一行与(...)开始多行文本,你可以使用这个表达式:

/^(?:\(.+?\).*[\r\n]*)+$/ 

RegEx Demo

这将失败的比赛,如果任何行开始没有(...)模式。

+0

另一种选择是使用['!/ ^(?!\([^)\ n] + \)| \ s * $)/m.test(input)'](https://regex101.com/r/vY4hA3/3)**(注意在开始时使用否定)** – anubhava

0

您是不是要找

var regex = /^(?:(?:^|\r*\n)(?:[\t ]*|\s*\([\t ]*(?:[^\(\)\s][\t ]*)+\)[^\r\n]*))*$/; 

Regular expression visualization

Test it live on Debuggex

相关问题