C# 如何编写一个只允许字母、数字和特殊字符的正则表达式,中间永远不允许

C# 如何编写一个只允许字母、数字和特殊字符的正则表达式,中间永远不允许,c#,regex,url,C#,Regex,Url,需要一些正则表达式帮助 到目前为止,我的代码允许有限数量的特殊字符。然而,我不知道如何让它只允许它们在中间而永远不会结束。 有人能帮我弄清楚那部分吗 下面是我在c#中使用的代码: 这意味着: 匹配必须至少以一个数字或字母字符开头:[A-Z-z0-9]+ 序列后面可能有零个或多个特殊字符-.+*后跟至少一个数字或字母字符。 第二种组合可能发生零次或多次(例如:asdf-e*r!asdf,或a有效) 这意味着: 匹配必须至少以一个数字或字母字符开头:[A-Z-z0-9]+ 序列后面可能有零个或多个特

需要一些正则表达式帮助

到目前为止,我的代码允许有限数量的特殊字符。然而,我不知道如何让它只允许它们在中间而永远不会结束。

有人能帮我弄清楚那部分吗

下面是我在c#中使用的代码:

这意味着:

匹配必须至少以一个数字或字母字符开头:
[A-Z-z0-9]+

序列后面可能有零个或多个特殊字符
-.+*后跟至少一个数字或字母字符。
第二种组合可能发生零次或多次(例如:
asdf-e*r!asdf
,或
a
有效)

这意味着:

匹配必须至少以一个数字或字母字符开头:
[A-Z-z0-9]+

序列后面可能有零个或多个特殊字符
-.+*后跟至少一个数字或字母字符。

第二个组合可以零次或多次出现(例如:
asdf-e*r!asdf
,或
a
有效)

如果特殊字符不能出现在结尾,那么结尾应该是什么?(也就是说,你的正则表达式中的哪些字符你认为是“特殊的”?)如果特殊字符不能在结尾出现,最后应该是什么?(你的正则表达式中的哪些字符你认为是“特殊的”?)正确,但是中间部分应该使用<代码> +/>代码>不<代码> */C> >:<代码> [-+,+*] + < /代码>。如果没有特殊字符,正则表达式的这一部分甚至不应该变为活动状态——这就是最外层的
*
的用途。当你说“一个或多个”时,说“零个或多个”只会让正则表达式引擎毫无目的地更努力地工作。谢谢艾伦,这是最终结果吗?(@“^[A-Za-z0-9]+([-.+!*]+[A-Za-z0-9]+)*$”;正确,但是中间部分应该使用
+
而不是
*
[-.+!*]+
。如果没有特殊字符,正则表达式的这一部分甚至不应该变为活动状态——这就是最外层的
*
的用途。当你说“一个或多个”时,说“零个或多个”只会让正则表达式引擎毫无目的地更努力地工作。谢谢艾伦,这是最终结果吗?(@“^[A-Za-z0-9]+([-.+!*]+[A-Za-z0-9]+)*$”;
            Regex uRLToVal= new Regex("^[A-Za-z0-9-_.+!*]*$");

            if (!uRLToVal.IsMatch(this.mainURL))
            {
                results.AddPropertyError("Your Entry can only contain letters, numbers, underscores, periods, plus, exclamation marks and hypens. Special characters should always be inside numbers or letters.  Example: v!v is OK BUT NOT !vv or vv!");
            }
new Regex(@"^[A-Za-z0-9]+([-_.+!*]+[A-Za-z0-9]+)*$");