C# 正则表达式允许字母数字,只有一个空格,然后是字母数字
我搜索了又搜索,尝试了很多不同的方法,但我似乎无法理解这一点。我正在寻找一种只允许字母数字字符,然后只允许一个空格,然后是字母数字字符的方法。我相信这很容易,但我不知道 我想要的示例: First Last Allowed First La-st Not Allowed FirstLast Not Allowed First Last Not Allowed First La'st Not allowed 最后一次允许 第一次是不允许的 最后一个是不允许的 不允许先到后 第一次是不允许的 然后我想从字符串中删除无效字符 如果你需要更多信息,请告诉我。非常感谢 这应该可以做到: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 最后一次允许 第一次
^[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个空格,而不是像您的解决方案那样“一个或多个”单词之间只有一个空格。