Javascript 检查每行的第一个字是否包含特定字符
在验证用户输入时,我使用正则表达式检查每行的开头(实际上包含内容,跳过双空格),是否总是有一组括号,内容在任何其他字符之前。在摆弄了多个变体之后,我想出了一个最简单的版本,它失败了Javascript 检查每行的第一个字是否包含特定字符,javascript,regex,Javascript,Regex,在验证用户输入时,我使用正则表达式检查每行的开头(实际上包含内容,跳过双空格),是否总是有一组括号,内容在任何其他字符之前。在摆弄了多个变体之后,我想出了一个最简单的版本,它失败了 var regex = new RegExp('^\\([^)]+\\).*?$', 'm'); 预期结果是针对以下实例测试true: (测试)不管什么。\n(另一个测试)再次。。。随便 或 (测试)不管什么。\n\n(另一个测试)再次。。。随便 如果字符串中的任何行以()开头,括号内至少有一个字符,然后在括号后有
var regex = new RegExp('^\\([^)]+\\).*?$', 'm');
预期结果是针对以下实例测试true:
(测试)不管什么。\n(另一个测试)再次。。。随便
或
(测试)不管什么。\n\n(另一个测试)再次。。。随便
如果字符串中的任何行以(
)开头,括号内至少有一个字符,然后在括号后有任何内容之前被)
关闭,则应失败;唉,我上面的表达式将忽略任何检查第一行之后的任何行的尝试。如果第二行格式不正确,例如(test)whatever\n这应该返回false
,那么它仍然会在.test()
上返回true
一些有效匹配可能包括:
(测试)通过
(测试)通过\n(也)通过
(再次)通过\n\n(也)通过\n(我们)可以整天这样做
(有)可以有\n \n \n \n(数量)的\n(换行符)作为\n \n \n \n \n(长)作为\n(内容)以一组括号开始的\n(行)
(字符的)类型\n \n(不)重要,\n唯一的例外是\n(严格执行)每行开头的\n(开括号和闭括号)
在.test()
上应返回false的一些无效匹配包括:
没有
也没有
(无右括号=无
不适用于上述相反的情况)
(是的,到目前为止)实际上…\n开始
一大碗\n(不是!)
)猜猜看
)不好
要验证多行文本中以
(…)
开头的每一行,可以使用以下正则表达式:
/^(?:\(.+?\).*[\r\n]*)+$/
如果任何行开始没有(…)
模式,则匹配将失败。您的意思是
var regex = /^(?:(?:^|\r*\n)(?:[\t ]*|\s*\([\t ]*(?:[^\(\)\s][\t ]*)+\)[^\r\n]*))*$/;
可能
/^(?:\([^)]+\).[\r\n]*)+$/
?或我建议使用文字正则表达式表示法。或者你的意思是?添加了一些通过/失败的示例。另一个选项是使用(注意在开始时使用否定)