的Javascript模式验证
请有人可以帮助我用正则表达式来验证这种模式的Javascript模式验证
aaa [bbb]
我想在上面呈现的格式输入的字符串。 aaa
& bbb
可以是一个或多个可能包含特殊字符的单词的任意组合。 bbb
必须包含在方括号内([...]
)。完整的字符串可以有前导或尾随空格。
我已经试过这样:
var re=/\w{0,} \[*\w{0,}\]/
但它在测试字符串返回假像:
re.test("onc>*!llklk[dd<dfd]")
首先,以使其更易于阅读,你可以取代{0,}
由*
,因为它是一样的事情。 接下来,\w
与>
或*
等某些符号不匹配,您可以使用.
来匹配任何符号。 然后,就像其他答案所说,你期待两个组之间有空格(aaa和[bbb]),所以你的例子不会匹配。
我认为这个正则表达式是一个很好的起点(取决于你的其他要求)。
/.+\[.+\]/
谢谢@lechariotdor我测试了你的解决方案,它似乎没关系,但在这个测试中失败/.*\[.*\]/.test("[dd
好的,如果你在[bbb]组之前至少需要1个字符,你应该用'+'替换第一个'*'。我编辑过。如果您在'[]'之间至少需要一个字符,则应该替换第二个'*'。 – tiledcode 2014-10-09 13:42:57
再次感谢您的努力,但最新的解决方案无法通过此测试/.+\[.*\]/。test(“sdsd!sdsd []“)。这应该返回false – Paullo 2014-10-09 13:52:01
你的正则表达式明确要求的空间存在。我们可以想像Regexper此:
这将返回上"onc>*!llklk[dd<dfd]"
假的,因为没有空格字符。
解决您的问题,无论是使用具有空格字符测试字符串,或者改变你的正则表达式不要求这个人物:
var re = /\w{0,}\[*\w{0,}\]/;
re.test("aaa [bbb]");
> true
re.test("onc>*!llklk[dd<dfd]");
> true
你可能想,虽然重新思考你的正则表达式,因为它的立场,一个"]"
字符将通过测试:
re.test("]");
> true
谢谢@詹姆斯唐纳利 – Paullo 2014-10-09 14:15:21
谢谢@vks,这真是太好了,它通过了一系列测试用例期望/ \ S + \ s * \ [\ S +?\]/.test(“sdsd!sdsd [hjhj * sfsd]”)和/ \ S + \ s * \ [\ S +?\] /。test(“sdsd!sdsd [hjhj * sfsd]”)请帮助我? – Paullo 2014-10-09 13:46:51
对不起,我的意思是这很棒,它通过了一系列测试用例,期望/ \ S + \ s * [\ S +?] /。test(“sdsd!sdsd []”)请帮助我吗? bbb和/ \ S + \ s * [\ S +?] /。test(“[]”)也通过 – Paullo 2014-10-09 13:55:16
@Paullo这将完全改变问题和答案。我建议您发布一个新的问题,接受:) – vks 2014-10-09 13:59:16
是,但此/ \ W {0,} \ [* \ W {0,} \] /测试( 'AAA [BBB!]')。失败 – Paullo 2014-10-09 13:31:34