2017-06-07 175 views
2

我需要使用,应满足以下要求正则表达式来验证输入字符串:正则表达式的字母数字特殊字符

  • 如果所有的数字 - >错误
  • 如果所有特殊字符 - >错误
  • 如果只是数字+特殊字符 - >错误
  • 剩余的所有应该被标记为非错误。

我无法通过所有测试用例。

这里是我的正则表达式:

\d*([a-zA-Z,\/().]*[a-zA-Z][\d,\/().]*)[a-zA-Z\d\s]*$ 

,特殊字符,我得到一个特定的列表,\/().让他们在任何人能帮助我理解这一点。?

回答

0

您可以使用下面的正则表达式:

^(?:[\d,\/().]*[a-zA-Z][a-zA-Z\d,\/().]*)?$ 

regex demo

详细

  • ^ - 字符串的开始
  • (?:[\d,\/().]*[a-zA-Z][a-zA-Z\d,\/().]*)? - 一个可选的序列(其让字符串为空):
    • [\d,\/().]* - 0+数字和特殊
    • [a-zA-Z] - 一个字母
    • [a-zA-Z\d,\/().]* - 0+字母,数字和特殊
  • $ - 字符串的结尾
+0

这是工作和感谢。我只是想了解并与我的正则表达式进行比较。在我的正则表达式中,所有特殊字符都与我传递的不相关。有什么遗漏吗? – Vamchi

+0

您错过了'^'(这里是一个严重的错误),并且您还允许使用'\ s'作为空格。 –

+0

如果我们允许空白,那么它会是“^(?:[\ d,\ /()。\ s] * [a-zA-Z] [a-zA-Z \ d,\ /()。\ s] * \ s *)?$“?例如:它应该允许(19 xxxx sjnfjfb) – Vamchi

0

去严格根据您的要求,以下方法可以做到:

[^\d,\\\/().] 

如果有任何“触发”字符(非数字,非特殊)

如果你想整个字符串匹配相匹配,使用

^.*[^\d,\\\/().].*$ 
相关问题