正则表达式以匹配字符串中的字母和数字(可选),该字符串可以具有一组特殊字符

时间:2018-10-25 06:10:51

标签: javascript regex regex-lookarounds

https://regex101.com/r/RLi59p/1

/(?=.*[0-9])(?=.*[a-z])([a-z0-9]+)[!@#$%^&*]*$/i

我制作的正则表达式符合以下模式:

  • Test2123
  • 568test
  • test2rest
  • @test2rest
  • @test2rest@

但无法匹配以下模式

  • @test2rest@5
  • @test2rest@test

2 个答案:

答案 0 :(得分:1)

您需要在正则表达式中进行一些更正,并以这样的方式一起定义所有允许的字符,

(?=.*[0-9])(?=.*[a-z])[a-z0-9!@#$%^&*]*$

在正则表达式中,有这个

([a-z0-9]+)[!@#$%^&*]*

这意味着在您的输入字符串中,字母数字字符必须排在首位,最后是特殊字符,这就是失败的原因。

答案 1 :(得分:0)

在字符串检查结束时您缺少a-z,因此@test2rest@#匹配,但@test2rest@a没有匹配。

尝试:

/(?=.*[0-9])(?=.*[a-z])([a-z0-9]+)[!@#$%^&*a-z]*$/i