尝试在 C# 中创建函数以验证字符串是否传递了这些规则
<可选包含符号的任何字符,但><至少 _x0031_=" 个字母数字字符=">@<至少 _x0031_=" 个字母数字字符="><可选 包含除=">以外的符号的任何字符可选>至少>至少>
基本上确保中间有一个@符号
通过
a@a
1@1
a@1
1@a
11@aa
#!@#1a!#a
1@dasdas2!#
失败
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 @
听起来你正在寻找这样的东西:
^[^@]?[A-Za-z0-9]+@[A-Za-z0-9]+[^@]?$
但是,正如注释中已经提到的,您的最后两个"传递"输入与您的规则不匹配 -#!@#1a!#a
在@
之前缺少字母数字字符,并且在第一个和最后一个字符以外的位置具有非字母数字字符。1@dasdas2!#
末尾有两个符号,但规则规定!
无效,因为它不是字母数字。
请注意,"字母数字"可能意味着不同的东西,具体取决于区域设置。在上面,我从字面上理解为 A-Z、a-z 和 0-9,但还有许多其他字符是"字母"或"数字"。 如果您的正则表达式变体支持w
可能是更好的替代品(您没有指定变体),但通常,w
也允许下划线 (_
)。如果课程不是"字母数字",所以你需要前瞻性的断言来禁止_
(同样,这将是特定于变体的,因为正则表达式在实现中没有完全标准化)。