如何检查C#正则表达式是否试图匹配1-(and-inly-1)字符串?

StackOverflow https://stackoverflow.com/questions/3870344

  •  28-09-2019
  •  | 
  •  

也许这是一个非常罕见的(甚至是愚蠢)的问题,但是我确实需要在我的应用中。

如何检查C#正则表达式是否试图匹配1个字符字符串?

这意味着,我只允许用户搜索1个字符的字符串。如果用户试图搜索多字符字符串,则将向用户显示错误消息。

我清楚自己吗?

谢谢。

彼得

PS:我看到了一个关于计算最终匹配字符串的长度的答案,但是由于某些未知原因,答案消失了。我认为一段时间以来,我认为计算最终匹配的字符串长度还可以,尽管这会很慢。然而,最初的问题非常罕见和乏味。

有帮助吗?

解决方案

您可以仅将其应用于单个字符而不是整个字符串,而不是验证可能复杂的正则表达式。

如果不可能,您可能需要将正则表达式的可能性限制为某些特征。例如,用户只能输入字符以匹配或排除字符。然后,您在代码中构建正则态度。

例如:

  • ABC 火柴 [ABC]
  • ^ABC 火柴 [^ABC]
  • A-Z 火柴 [A-Z]
  • # 火柴 [0-9]
  • \w 火柴 \w
  • AB#x-z 火柴 [AB]|[0-9]|[x-z]|\w
  • 您需要支持哪些情况?

这很容易解析和验证。

其他提示

正则是 .{1} 不过,这将允许任何字符。如果您只想要alpanumeric,则可以使用 [a-z0-9]{1} 或速记 /w{1}

它的另一个选项是限制用户可以在输入字段中输入的字符数。在其上设置最大长度。

另一个选择是将表单输入字段保存到char而不是字符串,尽管您可能需要进行一些处理以防止错误。

为什么不使用maxLength并保存到字符中。

您可以寻找无浮标的 *, +, {}, ? 等等,并计算字符的数量(不要忘记将 [] 作为一个角色)。

基本上,您必须解析正则。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top