Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/272.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何检查C#正则表达式是否试图匹配1(且仅1)个字符串?_C#_Regex - Fatal编程技术网

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

如何检查C#正则表达式是否试图匹配1(且仅1)个字符串?,c#,regex,C#,Regex,也许这是一个非常罕见(甚至愚蠢)的问题,但我确实需要在我的应用程序中使用它 如何检查C#正则表达式是否试图匹配1个字符的字符串 这意味着,我只允许用户搜索1个字符的字符串。如果用户试图搜索多个字符串,将向用户显示一条错误消息 我说清楚了吗 谢谢 彼得 注:我看到了一个关于计算最终匹配字符串长度的答案,但不知什么原因,答案不见了。 我想了一会儿,我认为计算最终匹配的字符串长度是可以的,尽管它会有点慢。 然而,最初的问题是非常罕见和乏味的。一个regexp应该是{1} 这将允许任何字符。如果您只需要

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

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

这意味着,我只允许用户搜索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的字符数相同,这就是为什么我还说“不要忘记将
[]
展平为一个字符”谢谢你的回复。对于纯英语字符,您的解决方案可能还可以。但是我正在处理带有一堆符号的亚洲/中文文本,英语/日语字母等等。你可以很容易地用这些字符扩展语法。它变得太复杂了,尝试将正则表达式应用于单个字符,如第一段所建议的。你能举个例子说明你想要什么吗。给出一个搜索示例。