繁体   English   中英

C#的MVC中的正则表达式以匹配字符

[英]Regular Expression in MVC of c# to match characters

我正在使用正则表达式来匹配某些字符,例如ç"·$%&/()=?等。

我正在测试网页中的正则表达式

http://www.softlion.com/webTools/RegExpTest/default.aspx

它可以正常工作,但是当我在MVC模型中使用正则表达式时,它无法正常工作,并且总是显示错误消息。

在c#中使用的指令是:

[RegularExpression(@"[ç\"·$%&/()=?]$", ErrorMessage="some message")]

ç\\“·$%&/()=?] $是不允许的字符

我仍然有问题,我不明白为什么它不起作用

如果我写类似这样的东西,我总是会看到错误消息: ABCDEF (对我来说是正确的字符)或ABCDçEF=GHIJ (不正确)

在模型中,我像自定义属性一样更改了RegularExpression。 在模型的属性中,我有:

[CaracteresNoPermitidosAttribute(ErrorMessage =“ test 123”)]公共字符串RazonSocial {get; 组; }

Attribute类是:

public class CaracteresNoPermitidosAttribute : RegularExpressionAttribute
{
public CaracteresNoPermitidosAttribute() : base(GetRegex())
{ }

private static string GetRegex()
{
// I take the data from the table to get the disallowed characters
var lista = (List<Caracterko>) new CaracterkoProxy().ObtenerTodos();

// I transform the list to string
var str = string.Join("", from x in lista where x.Activo select x.Caracter.ToString());

return @"(?![" + str + "])$";
}
}

我使用了Tim给出的示例作为正则表达式

您的正则表达式只寻找一个字符,然后寻找字符串的结尾。 如果只想允许该集中的字符,则应使用- [ç\\"·$%&/()=?]+$类的表达式

由于您已明确表示不想在字符串中使用这些字符,因此请使用负数前瞻:

(?![ç\\"·$%&/()=?])

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM