1

文字列に 30 文字の制限がある正規表現クエリを作成する方法を学んでいます (主に名と姓に使用)

私はasp.net C#を使用していますが、私が書いているコードでは正しいとは思えません

[WebMethod]   
public bool stringOnlyAndLimit(String strToCheck) 
{
    Regex stringonly = new Regex("[^a-zA-Z]{1,30}"); 
    return !stringonly.IsMatch(strToCheck);
}

前もって感謝します

4

5 に答える 5

2

正規表現を学びたい場合は、この回答を無視してください。

非正規表現オプション。 そのようなものには正規表現は必要ありません。次のことができます。

public bool stringOnlyAndLimit(String strToCheck)
{
 return strToCheck.Length < 31 && strToCheck.All(r => char.IsLetter(r));        
 //return strToCheck.Length < 31 && !strToCheck.Any(r => char.IsDigit(r));
}

正規表現を使用

public static bool stringOnlyAndLimit(String strToCheck)
{
    Regex stringonly = new Regex("^[a-zA-Z ]{1,30}$");
    return stringonly.IsMatch(strToCheck);
}
于 2013-09-10T17:27:22.853 に答える
1

次のようなことを試すことができます:-

^[a-zA-Z ]{1,30}$
于 2013-09-10T17:27:11.070 に答える
1

あなたの正規表現は現在、括弧内[^a-zA-Z]{1,30}にニンジンがあるため、文字 az と AZ ではないものをすべて教えてくれると言っています。^これを削除すると、空白のない単一の文字列で機能します。

スペース文字を含む 1 つの RegEx で姓と名をチェックし、30 文字未満である場合は、次のようにする必要があります。

^[a-zA-Z\s]{1,30}$

于 2013-09-10T17:29:07.050 に答える
0

C# の場合は特にありませんが、^ はかっこ内のNOT記号です。[^abc] は、a、b、c以外の任意の文字に一致します。

したがって、正規表現は [a-zA-Z]{1,30} である必要があります

于 2013-09-10T17:28:49.197 に答える
0

この正規表現を試してください

^[A-Za-z]{0,30}$
于 2013-09-10T17:29:34.080 に答える