0

ç"·$%&/()=?などの一部の文字に一致させるために正規表現を使用しています。

Web ページで正規表現をテストしています

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 + "])$";
}
}

ティムが提供した例を正規表現として使用しました

4

1 に答える 1

0

正規表現は、1 文字だけを検索し、次に文字列の末尾を検索します。そのセット内の文字のみを許可する場合は、次のような式を使用する必要があります -[ç\"·$%&/()=?]+$

これらの文字を文字列に含めたくないことを明確にしたので、否定先読みを使用します。

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

于 2013-11-05T08:55:54.143 に答える