我如何加入两个正则表达式?

时间:2015-04-23 07:31:27

标签: asp.net regex unobtrusive-javascript

我有两个正则表达式,我需要加入一个,因为我在ASP.NET中使用RegularExpressionAttribute并且它不允许多个实例。

如何将以下两个正则表达式合并为一个?

.*?@(?!.*?\.\.)[^@]+$
[\x00-\x7F]

第一个检查电子邮件的域部分中没有2个连续点,第二个正则表达式检查所有字符是否为ascii

我认为它可能像加入(.*?@(?!.*?\.\.)[^@]+$)([\x00-\x7F])一样容易,但这不起作用

以前是关于此问题的帖子的link

编辑:我正在使用reglarexpression属性修饰我的viewmodel的字符串属性,并使用unobtrusive将其渲染为javascript,因此必须使用javascript进行验证。我在最初的帖子中没有提到这个

2 个答案:

答案 0 :(得分:3)

您可以使用:

^[\x00-\x7F]+?@(?!.*?\.\.)(?=[\x01-\x7F]+$)[^@]+$

答案 1 :(得分:3)

你可以使用这个正则表达式

^[\x00-\x7F-[@]]*?@(?!.*?\.\.)[\x00-\x7F-[@]]+$

或者,如果您想在@之前匹配至少1个字符:

^[\x00-\x7F]+@(?!.*?\.\.)[\x00-\x7F-[@]]+$

请注意[\x00-\x7F]还包含@符号。在C#regex中,我们可以使用字符类中的-[@]从范围中减去此值。

你不需要锚,因为你在RegularExpressionAttribute中使用它,我相信。

以下是demo on regexstorm.net,删除第二个@,您将获得匹配。