C# 中间有@字符的正则表达式

C# 中间有@字符的正则表达式,c#,.net,regex,validation,C#,.net,Regex,Validation,尝试在C#中创建一个函数来验证字符串是否通过这些规则 @ 基本上确保中间有一个@符号 通过 a@a 1@1 a@1 1@a 11@aa #!@#1a!#a 1@dasdas2!# 失败 听起来你在找这样的东西: ^[^@]?[A-Za-z0-9]+[A-Za-z0-9]+[^@]$ 但是,正如评论中已经提到的,您的最后两个“传递”输入与您的规则不匹配--#@#1a#在@之前缺少字母数字字符,并且在第一个和最后一个字符以外的位置具有非字母数字字符1@dasdas2!#的末尾有两个符号,但规则规

尝试在C#中创建一个函数来验证字符串是否通过这些规则

@

基本上确保中间有一个@符号

通过

a@a
1@1
a@1
1@a
11@aa
#!@#1a!#a
1@dasdas2!#
失败


听起来你在找这样的东西:

^[^@]?[A-Za-z0-9]+[A-Za-z0-9]+[^@]$
但是,正如评论中已经提到的,您的最后两个“传递”输入与您的规则不匹配--
#@#1a#
@
之前缺少字母数字字符,并且在第一个和最后一个字符以外的位置具有非字母数字字符<代码>1@dasdas2!#的末尾有两个符号,但规则规定
无效,因为它不是字母数字


请注意,“字母数字”可以表示不同的内容,具体取决于语言环境。在上面,我将其字面理解为A-Z、A-Z和0-9,但还有许多其他字符是“字母”或“数字”
\w
可能是一个更好的替代品,如果您的regex变量支持它(您没有指定变量),但是通常,
\w
也会允许下划线(
\u
)。如果这门课程不是“字母数字”的,那么您需要前瞻性的断言来禁止
(这同样是特定于变量的,因为正则表达式在实现中没有完全标准化)。

您能展示您的尝试吗?您的描述与您的描述不匹配inputs@TheGeneral请详细说明。这是如何通过的@#1a#a
当你说“@”和其他奇怪的词时,这似乎不允许点作为符号它似乎不允许符号1b2!a3@qad11#拜伦,这会允许“.”作为我所知道的任何正则表达式变体的符号。和“1b2!a3@qad11与你所说的规则不匹配,因为“!”符号在第一部分的中间,而不是在字符串的开头或结尾。下面是一个URL,用于测试我上面写的模式:
1a@!  fails because alphanumeric character should be besided @
!@ada fails because alphanumeric character should be besided @
a@a@b fails because has 2 @
a@    fails no character on the right
@b    fails no character on the left
@     fails no character beside @