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

C#正则表达式属性未按预期工作

C#正则表达式属性未按预期工作,c#,asp.net,regex,C#,Asp.net,Regex,我正在使用验证视图模型中一个输入上的多个电子邮件地址。错误信息不断出现在球场上。我已经在5个不同的在线测试站点上验证了我的正则表达式,它们都测试为阳性 这是我的密码: [RegularExpression(@"\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*([,;\s]+\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*){0,7}", ErrorMessage = "Please enter a valid ema

我正在使用验证视图模型中一个输入上的多个电子邮件地址。错误信息不断出现在球场上。我已经在5个不同的在线测试站点上验证了我的正则表达式,它们都测试为阳性

这是我的密码:

[RegularExpression(@"\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*([,;\s]+\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*){0,7}", ErrorMessage = "Please enter a valid email address.  For multiple addresses please use a comma or semicolon to separate the email addresses.")]
public string EmailAddresses { get; set; }
如果我输入一个电子邮件地址,它会工作;如果我输入两个没有空格的电子邮件地址,它会工作;但是如果我添加空格,它会中断。我添加了“\s”以包含空格,它在我尝试过的在线测试仪上确实有效,但在我的应用程序中不起作用

预期有效结果应为: 'test@test.com, test2@test.com, test3@test.com"

然而,这一点被认为是无效的。如果我使用完全相同的序列,没有空格,它是有效的

剑道UI正在检查表单的有效性,然后再将其发送给控制器

非常感谢您的帮助。提前感谢您。

尝试以下模式:

“^[[u A-Za-z0-9-\+]+(\\.[u A-Za-z0-9-]+)*@[A-Za-z0-9-]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$”
你不需要“@”符号。我在测试了您的模式,它与test@test.com, test2@test.com, test3@test.com . 使用下面的结构

public class LoginViewModel
{
  [RegularExpression("\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*([,;\s]+\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*){0,7}", ErrorMessage = "Please enter a valid email address.  For multiple addresses please use a comma or semicolon to separate the email addresses.")]
  public string EmailAddresses { get; set; }

}
要使其在ASP.NET MVC框架中工作,请确保在视图中执行以下操作

<input type="text" id ="EmailAddresses" name="EmailAddresses"/> 


验证时需要
id
name
属性。您可以如上所述手动执行此操作,也可以使用
@Html.EditorFor(model=>model.EmailAddresses)
为您创建
id
name
属性

我发现了问题。最后,它与C#无关。问题是我在前端使用剑道用户界面,正如在主要帖子中更新的那样。基诺用户界面还必须接收安德鲁发送的正则表达式更新来解决这个问题。我会让Andrew成为正确的解决方案,就像他的正则表达式为我工作一样。我完全被服务器端/客户端的差异所扭转,因为我对这一点还不熟悉。谢谢大家的帮助。

同样的问题。当我添加一个空格时,正则表达式失败了。这很奇怪,因为这种模式用空格和所有可能的电子邮件变体进行了测试。是否要在页面的一个文本字段中放置多个电子邮件?正确,我允许他们在一个文本字段中放置多个电子邮件地址,并用逗号或分号分隔。虽然我知道还有其他选项,但这是产品负责人想要的选项,不会屈服于此。因此,对于按空间排列的所有输入pslitt,似乎都需要类似smth的循环…但是如何执行reg exp?。尝试这个答案会有帮助吗,因为他是用JavaScript执行的?在我的C#视图模型中,我的是作为RegularExpression属性进行的。一个for循环在那里不会有帮助……是吗?我不熟悉C#
\s
还允许换行、垂直制表符、表单提要和其他一些功能。您确定要将这些内容包含在可接受的匹配中吗?它是如何“中断”的?请给出一些输入和输出示例与您期望的内容。是正则表达式被破坏了还是一些代码隐藏的逻辑?@ps2goat,这里有一些例子。。。。test@test.com, test2@test.com; test3@test.com(这是无效的)test@test.com,test2@test.com;test3@test.com(这是有效的)@KennethK.,我在使用RegExp备忘单来填补空白。我不想newlines@C.Daniel,您是否可以编辑您的问题并将预期的数据放入其中?使用勾号“`”(tab键上方)表示值的开始和结束位置,类似于代码标记,这样我们就知道是否包含尾随空格。“@”符号与任何事情有什么关系?@zespri,我说过他不需要@symbol。这不是原因。如果您阅读了答案,我说“为了让它在ASP.NET MVC框架中工作,请确保您在视图中执行以下操作…”,并提供了视图中所需的内容。“@”符号用于告诉编译器,以保持字符串文字的原样。此属性中不需要它,因为编译器不会转义任何内容,而是按原样使用。在此上下文中,@不是必需的。