如何检查C#正则表达式是否试图匹配1(且仅1)个字符串?
也许这是一个非常罕见(甚至愚蠢)的问题,但我确实需要在我的应用程序中使用它 如何检查C#正则表达式是否试图匹配1个字符的字符串 这意味着,我只允许用户搜索1个字符的字符串。如果用户试图搜索多个字符串,将向用户显示一条错误消息 我说清楚了吗 谢谢 彼得 注:我看到了一个关于计算最终匹配字符串长度的答案,但不知什么原因,答案不见了。 我想了一会儿,我认为计算最终匹配的字符串长度是可以的,尽管它会有点慢。如何检查C#正则表达式是否试图匹配1(且仅1)个字符串?,c#,regex,C#,Regex,也许这是一个非常罕见(甚至愚蠢)的问题,但我确实需要在我的应用程序中使用它 如何检查C#正则表达式是否试图匹配1个字符的字符串 这意味着,我只允许用户搜索1个字符的字符串。如果用户试图搜索多个字符串,将向用户显示一条错误消息 我说清楚了吗 谢谢 彼得 注:我看到了一个关于计算最终匹配字符串长度的答案,但不知什么原因,答案不见了。 我想了一会儿,我认为计算最终匹配的字符串长度是可以的,尽管它会有点慢。 然而,最初的问题是非常罕见和乏味的。一个regexp应该是{1} 这将允许任何字符。如果您只需要
然而,最初的问题是非常罕见和乏味的。一个regexp应该是
{1}
这将允许任何字符。如果您只需要alpanumeric,则可以使用[a-z0-9]{1}
或速记/w{1}
另一个选项是限制用户可以在输入字段中键入的字符数。在其上设置maxlength
另一种选择是将表单输入字段保存为字符而不是字符串,尽管您可能需要对此进行一些处理以防止出错
为什么不使用maxlength并保存到一个字符。而不是验证正则表达式(这可能很复杂),您可以只对单个字符而不是整个字符串应用它 如果这是不可能的,您可能希望将正则表达式的可能性限制在某些特定功能上。例如,用户只能输入要匹配的字符或要排除的字符。然后在代码中构建正则表达式 例如:
匹配ABC
[ABC]
匹配^ABC
[^ABC]
匹配A-Z
[A-Z]
匹配#
[0-9]
匹配\w
\w
匹配AB#x-z
[AB]|[0-9]|[x-z]|\w
- 您需要支持哪些案例
这将有点容易解析和验证。您可以查找未转义的
*
,+
,{}
,?
等,并计算字符数(别忘了将[]
展平为一个字符)
基本上,您必须解析正则表达式。。?将匹配0-1长度的字符串。有太多的可能性:例如“[a_z]”或“\P{groupName}”,谢谢您的回复。但我没有明白。我不是说正则表达式本身的长度,而是说最终结果字符串的长度应该始终为1。纯文本呢?例如,
ABC
将匹配一个三个字符的字符串,而[ABC]将是有效的。@Stefan Steinegger,没错,这就是他需要计算字符数的原因;)但是<代码>[ABC]的字符数与xj\w4
@Stefan Steinegger的字符数相同,这就是为什么我还说“不要忘记将[]
展平为一个字符”谢谢你的回复。对于纯英语字符,您的解决方案可能还可以。但是我正在处理带有一堆符号的亚洲/中文文本,英语/日语字母等等。你可以很容易地用这些字符扩展语法。它变得太复杂了,尝试将正则表达式应用于单个字符,如第一段所建议的。你能举个例子说明你想要什么吗。给出一个搜索示例。