0

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

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

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; 放; }

属性类是:

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 给出的例子作为正则表达式

4

1 回答 1

0

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

由于您澄清了您不希望在字符串中包含这些字符,因此请使用否定前瞻:

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

于 2013-11-05T08:55:54.143 回答