请有人帮助我使用正则表达式来验证此模式的字符串
aaa [bbb]
我想以上面表达的格式输入。 aaa
& bbb
可以是一个或多个单词的任意组合,也可以包含特殊字符。 bbb
必须包含在方括号([...]
)中。完整字符串可以有前导或尾随空格。
我试过这个:
var re=/\w{0,} \[*\w{0,}\]/
但它在测试字符串上返回false,如:
re.test("onc>*!llklk[dd<dfd]")
答案 0 :(得分:2)
您的正则表达式明确要求存在空格。我们可以使用Regexper:
来形象化
这在"onc>*!llklk[dd<dfd]"
上返回false,因为没有空格字符。
要解决您的问题,请使用具有空格字符的测试字符串,或将正则表达式更改为不需要此字符:
var re = /\w{0,}\[*\w{0,}\]/;
re.test("aaa [bbb]");
> true
re.test("onc>*!llklk[dd<dfd]");
> true
您可能想要重新考虑您的正则表达式,因为就目前而言,单个"]"
字符将通过测试:
re.test("]");
> true
答案 1 :(得分:2)
答案 2 :(得分:1)
首先,为了便于阅读,您可以将{0,}
替换为*
,因为它是相同的。
接下来,\w
与>
或*
等某些符号不匹配,您可以使用.
来匹配任何符号。
然后,就像另一个答案所说,你期望两组之间有一个空格(aaa和[bbb]),所以你的例子不匹配。
我认为这个正则表达式是一个很好的起点(取决于你的其他要求)。
/.+\[.+\]/