Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.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# 正则表达式允许和禁止特定字符_C#_Regex_String - Fatal编程技术网

C# 正则表达式允许和禁止特定字符

C# 正则表达式允许和禁止特定字符,c#,regex,string,C#,Regex,String,我有一个正则表达式,如下所示: RegularExpression(@"^[a-zA-Z]+[ a-zA-Z-]*$", ... 有没有办法禁止双空格、双破折号和破折号空格/空格破折号序列?我还需要检查最后一个字符是否为字母数字 textOK 文本文本正常 文本文本正常 text--text不正常 文本文本不正常 text-text不正常 text-text不正常 text不正常 -文本不正常 text-不正常 text不正常 谢谢大家,我很感激任何提示。将正则表达式更改为 ^[a-zA-Z]

我有一个
正则表达式
,如下所示:

RegularExpression(@"^[a-zA-Z]+[ a-zA-Z-]*$", ...
有没有办法禁止双空格、双破折号和破折号空格/空格破折号序列?我还需要检查最后一个字符是否为字母数字

text
OK

文本文本
正常

文本文本
正常

text--text
不正常

文本文本
不正常

text-text
不正常

text-text
不正常

text
不正常

-文本
不正常

text-
不正常

text
不正常

谢谢大家,我很感激任何提示。

将正则表达式更改为

^[a-zA-Z]+(?:[ -][a-zA-Z]+)?$

详细信息

  • ^
    -字符串的开头
  • [a-zA-Z]+
    -1个或多个ASCII字母
  • (?:[-][a-zA-Z]+)?
    -一个或零个序列:
    • [-]
      -空格或
      -
    • [a-zA-Z]+
      -1个或多个ASCII字母
  • $
    -字符串结束
注:

  • 如果您只需要匹配任何Unicode字母,请将我的模式中的
    [a-zA-Z]
    替换为
    \p{L}
  • 要检查字符串在C#中是否有效,请使用
    var valid=Regex.IsMatch(s,@“^\p{L}+(?:[-]\p{L}+?$”
    
因此,根据您发布的内容,您可以使用

^\p{L}+(?:[ -]\p{L}+)?$

请参见

要检查最后一个字符是否为字母数字,您可以执行以下操作:
char.IsLetterOrDigit(str.last())
char.IsLetterOrDigit(str,str.Length-1)
。仔细想想,您为什么想知道这一点?@Wiktor Stribiżew的答案提出的正则表达式最后只接受一个字符。再次感谢先生,您的答案正是我所需要的。