【问题标题】:Regular Expression to accept - character接受的正则表达式 - 字符
【发布时间】:2016-07-04 07:49:45
【问题描述】:

我目前有一个正则表达式来验证我的应用程序中的一个字段,如下所示:

^(?:(?:\w|[-])+\.(?:(?:(?:\w|[-])+|\.))*(?:\/(?:\w|[-])*)*|\w*)$

不幸的是,这在某些方面不起作用。

  • aaa - 通过 - 正确

  • aaa.aaa - 通过 - 正确

  • aaa.aaa-aaa - 通过 - 正确

  • aaa-aaa - 失败 - 不正确

如何更改我的正则表达式以使最后一个场景通过?

【问题讨论】:

  • 您应该将点设为可选:^(?:(?:\w|[-])+\.?(?:(?:(?:\w|[-])+|\.))*(?:\/(?:\w|[-])*)*|\w*)$

标签: c# regex validation


【解决方案1】:

第一个 \. 导致您的最后一个表达式失败。由于组比较多,所以表达式的第一部分必须匹配。

如果您将点设为可选,则您的表达式有效。

不确定,但也许你可以像这样简化表达式:

[A-Za-z]+([\-\.][A-Za-z]+)*

【讨论】:

  • 不过,锚点必须存在。
猜你喜欢
  • 2018-05-28
  • 1970-01-01
  • 1970-01-01
  • 2010-12-19
  • 1970-01-01
  • 2014-12-20
  • 2020-07-26
  • 2023-03-24
  • 1970-01-01
相关资源
最近更新 更多