的Javascript模式验证

的Javascript模式验证

问题描述:

请有人可以帮助我用正则表达式来验证这种模式的Javascript模式验证

aaa [bbb] 

我想在上面呈现的格式输入的字符串。 aaa & bbb可以是一个或多个可能包含特殊字符的单词的任意组合。 bbb必须包含在方括号内([...])。完整的字符串可以有前导或尾随空格。

我已经试过这样:

var re=/\w{0,} \[*\w{0,}\]/ 

但它在测试字符串返回假像:

re.test("onc>*!llklk[dd<dfd]") 
+0

是,但此/ \ W {0,} \ [* \ W {0,} \] /测试( 'AAA [BBB!]')。失败 – Paullo 2014-10-09 13:31:34

首先,以使其更易于阅读,你可以取代{0,}*,因为它是一样的事情。 接下来,\w>*等某些符号不匹配,您可以使用.来匹配任何符号。 然后,就像其他答案所说,你期待两个组之间有空格(aaa和[bbb]),所以你的例子不会匹配。

我认为这个正则表达式是一个很好的起点(取决于你的其他要求)。

/.+\[.+\]/ 

Try it here

+0

谢谢@lechariotdor我测试了你的解决方案,它似乎没关系,但在这个测试中失败/.*\[.*\]/.test("[dd Paullo 2014-10-09 13:40:57

+0

好的,如果你在[bbb]组之前至少需要1个字符,你应该用'+'替换第一个'*'。我编辑过。如果您在'[]'之间至少需要一个字符,则应该替换第二个'*'。 – tiledcode 2014-10-09 13:42:57

+0

再次感谢您的努力,但最新的解决方案无法通过此测试/.+\[.*\]/。test(“sdsd!sdsd []“)。这应该返回false – Paullo 2014-10-09 13:52:01

你的正则表达式明确要求的空间存在。我们可以想像Regexper此:

Example

这将返回上"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 
+0

谢谢@詹姆斯唐纳利 – Paullo 2014-10-09 14:15:21

\S+\s*\[\S+?\] 

,如果你想允许的特殊字符,以及你可以试试这个。

http://regex101.com/r/yA1jY6/3

+0

谢谢@vks,这真是太好了,它通过了一系列测试用例期望/ \ S + \ s * \ [\ S +?\]/.test(“sdsd!sdsd [hjhj * sfsd]”)和/ \ S + \ s * \ [\ S +?\] /。test(“sdsd!sdsd [hjhj * sfsd]”)请帮助我? – Paullo 2014-10-09 13:46:51

+0

对不起,我的意思是这很棒,它通过了一系列测试用例,期望/ \ S + \ s * [\ S +?] /。test(“sdsd!sdsd []”)请帮助我吗? bbb和/ \ S + \ s * [\ S +?] /。test(“[]”)也通过 – Paullo 2014-10-09 13:55:16

+0

@Paullo这将完全改变问题和答案。我建议您发布一个新的问题,接受:) – vks 2014-10-09 13:59:16