检查每行的第一个单词是否包含特定字符

时间:2016-03-14 21:17:37

标签: javascript regex

在验证用户输入时,我使用正则表达式来检查每行的开头(实际包含内容,跳过双重空格),总是有一组括号内的括号其他人物。在摆弄多种变化之后,我提出的最简单的版本是失败的

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

预期的结果是针对以下实例测试true:

  

(测试)无论如何。\ n(另一个测试)再次......无论

  

(测试)无论如何。\ n \ n(另一个测试)再次......无论

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

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

  

(测试)通过

     

(测试)传递\ n(也)传递

     

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

     

(那里)可以\ n(n)\ n \ n(n)(n)(\ n)(换行)的\ n \ n \ n \ n \ n(长)为每个\ n(行)有\ n(n) content)开始\ n(带有一组)括号。

     

()类型\ n \ n(of)字符\ n(不要)重要,\ n(和)唯一的\ n(例外)是\ n(严格执行)\ n (每行开头的(括号和右括号)

.test()上应该返回false的一些无效匹配包括:

  

都能跟得上

     

也不是

     

(没有右括号= Nope

     

不是与上述相反)

     

(到目前为止)实际上.... \ nNope

     

大碗\ n(不!)

     

)猜猜一下?

     

()没有好处

2 个答案:

答案 0 :(得分:1)

要在多行文字中验证每行以(...)开头,您可以使用此正则表达式:

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

RegEx Demo

如果任何行开头没有(...)模式,则匹配将失败。

答案 1 :(得分:0)

你的意思是

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

Regular expression visualization

Test it live on Debuggex