在验证用户输入时,我使用正则表达式来检查每行的开头(实际包含内容,跳过双重空格),总是有一组括号内的括号其他人物。在摆弄多种变化之后,我提出的最简单的版本是失败的
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(不!)
)猜猜一下?
()没有好处
答案 0 :(得分:1)
答案 1 :(得分:0)
你的意思是
var regex = /^(?:(?:^|\r*\n)(?:[\t ]*|\s*\([\t ]*(?:[^\(\)\s][\t ]*)+\)[^\r\n]*))*$/;