名前と番号の正規表現 ダーツ 質問する

名前と番号の正規表現 ダーツ 質問する

ユーザーが名前と番号を入力するフォームを検証する必要があります。名前に文字のみが含まれていることを確認するための正規表現があり、番号入力については、フィールドに数字のみが含まれていることを確認する必要があります。コードは次のようになります。

 validator: (value) => value.isEmpty
                        ? 'Enter Your Name'
                        : RegExp(
                                '!@#<>?":_``~;[]\|=-+)(*&^%1234567890')
                            ? 'Enter a Valid Name'
                            : null,

名前を検証して、特殊文字や数字が入力された場合は誤りとなり、文字のみが有効となる正規表現式と、アルファベット文字や特殊文字が入力された場合は誤りとなり、数字の入力のみが有効となる正規表現式を取得できますか。

ベストアンサー1

値がチェックされるたびに新しいインスタンスが作成されないようにするには、RegExp の静的最終フィールドを作成します。RegExp の作成にはコストがかかります。

static final RegExp nameRegExp = RegExp('[a-zA-Z]'); 
    // or RegExp(r'\p{L}'); // see https://stackoverflow.com/questions/3617797/regex-to-match-only-letters 
static final RegExp numberRegExp = RegExp(r'\d');

次のように使います

validator: (value) => value.isEmpty 
    ? 'Enter Your Name'
    : (nameRegExp.hasMatch(value) 
        ? null 
        : 'Enter a Valid Name');

おすすめ記事