Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.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#_.net_Regex - Fatal编程技术网

C# 正则表达式允许字母数字,只有一个空格,然后是字母数字

C# 正则表达式允许字母数字,只有一个空格,然后是字母数字,c#,.net,regex,C#,.net,Regex,我搜索了又搜索,尝试了很多不同的方法,但我似乎无法理解这一点。我正在寻找一种只允许字母数字字符,然后只允许一个空格,然后是字母数字字符的方法。我相信这很容易,但我不知道 我想要的示例: First Last Allowed First La-st Not Allowed FirstLast Not Allowed First Last Not Allowed First La'st Not allowed 最后一次允许 第一次

我搜索了又搜索,尝试了很多不同的方法,但我似乎无法理解这一点。我正在寻找一种只允许字母数字字符,然后只允许一个空格,然后是字母数字字符的方法。我相信这很容易,但我不知道

我想要的示例:

First Last Allowed First La-st Not Allowed FirstLast Not Allowed First Last Not Allowed First La'st Not allowed 最后一次允许 第一次是不允许的 最后一个是不允许的 不允许先到后 第一次是不允许的 然后我想从字符串中删除无效字符

如果你需要更多信息,请告诉我。非常感谢

这应该可以做到:

^[0-9a-zA-Z]+ [0-9a-zA-Z]+$
演示:

…应该这样做。

使用此正则表达式:

^[\p{L}\d]+ [\p{L}\d]+$
^\p{L}+ \p{L}+$

这应该有效

(?i)\b[a-z\d]+ [a-z\d]+\b

我相信您不希望名称中包含数字,您正在寻找以下正则表达式:

^[\p{L}\d]+ [\p{L}\d]+$
^\p{L}+ \p{L}+$

其中,
\p{L}+
匹配一个或多个“字母”字符,因此不仅仅是
a-z
a-z
,还有其他语言的字符。例如,埃利斯·威尔逊


如果你真的只想要字母数字字符,输入应该有两个部分,中间有一个空格;必须删除无效字符,然后:

  • [^\s\dA-Za-z]+
    的所有匹配项替换为空字符串
  • 通过将
    ^\s*
    替换为空字符串来修剪前导空格
  • 通过将
    \s*$
    替换为空字符串来修剪尾随空格,以及
  • 使用正则表达式检查/验证此类字符串
    ^[\da-zA-Z]+[\da-zA-Z]+$
  • 要从字符串中排除数字,请从上述模式中删除
    \d


    若要在两个字符之间留出更长的空格,而不仅仅是一个空格字符,请在第一个模式中的空格字符后面添加
    +
    ,或在第二个模式中的
    \s
    后面添加

    这将非常适用于字母数字字符,并且如果适用,它们之间只能有一个空格

        @"^[a-zA-Z0-9]+([ ]{0,1}[a-zA-Z0-9]+)*$"
    
    它将允许类似的值

        anand
        anand dev
        anand123 
        anand123 dev
        123anand
        123anand dev123
        my user name is anand123
        anand123  dev               **Not allowed due to multiple space**
         anand dev                  **not allowed due to space at begining**
    
    希望这对你有帮助。

    谢谢。

    在“FirstLast”中要删除的无效字符是什么?存在的所有字符都是有效的。如果您同意包含下划线,请使用\w表示:a-zA-Z0-9_@minitech这就是字符串无效的原因。这些字符是有效的。我对问题中的“我想删除字符串中的无效字符”进行了评论。@user1489735同样,“FirstLast”中没有要删除的无效字符。字符串无效,因为它没有空格,但删除字符不能使其有效。首先确定你想做什么,然后你可以决定怎么做。您是否可以编辑您的问题以包含您正在寻找的替换字符串列表?也许是
    First La st->First Last
    /
    First Last(两个空格)->First Last(一个空格)
    /
    第一第二第三->第一第二第三
    /
    FirstLast->FirstLast
    ?(编辑:似乎无法正确显示两个空格。)我实际上并没有用它来验证名称,这只是一个很好的例子@hvd是的,这些正是我正在寻找的替换字符串。唯一的区别是,在“FirstLast”的情况下,我希望实际上不接受该值,但我可以通过确定是否有空格来自己做,如果没有,则不接受它。不同意
    \s
    。我认为应该是一个空格(“”),他没有指定,但我认为
    ^
    $
    在这里是合适的。可能是OP想要的。但它肯定会拒绝大量的字母数字字符。@JonathonReinhart:在回答以下问题5秒后更新:P@CodeInChaos:我想是吧。我们会看到:)@minitech我只想要字母和数字。所以,这个正则表达式起作用了,但是如何删除无效字符呢?我以前做过RegEx.Replace,但那是如果我有一个不允许的字符列表,而不是一个允许的列表。谢谢哦,对了,是C+1.不过,您可能需要将其更改为空格。除了在两个单词之间放置多个空格外,替换似乎对所有内容都有效。@user1489735-然后使用
    ^\p{L}++\p{L}+$
    ^\p{L}+\s+\p{L}+$
    我实际上没有使用该正则表达式,因为我只需要字母和数字,所以我使用@”^[a-zA-Z0-9]+[a-zA-Z0-9]+$“然后,在你的文章的第1步中,在你的建议中使用replace。除了用户在单词之间加上一个以上的空格之外,这对任何事情都有效。@user1489735-然后在第4步中
    ^[\da-zA-Z]+[\da-zA-Z]+$
    。如果我加上这样的内容,实际上会产生一个空字符串:Test Stuff(单词之间有2个空格)。这是我的代码行:String newFieldValue=Regex.Replace(fieldText,@“^[\da-zA-Z]+[\da-zA-Z]+$”,“”)OP似乎只想要两个单词之间有1个空格,而不是像您的解决方案那样“一个或多个”单词之间只有一个空格。