0

次の基準で文字列を作成するための正規表現を探しています。

  • 可変長にすることができます (最大 30 文字)
  • 英数字 (az、AZ) と数字 (0-9) のみを使用できます
  • これらの特殊文字「-」、「」のみを使用できます。文字列のどこか
  • 特殊文字ではなく、英数字または数字のみで開始する必要があります
  • 5文字以上である必要があります

「バッジ」文字列は、サイトの URL で使用する必要があります。この文字列が適切かどうかについてアドバイスをいただければ幸いです。

ありがとうございました

4

3 に答える 3

1

正規表現は、検証または照合に使用される文字列を作成しません。そうですか?

制約に対して文字列を検証する正規表現は次のようになります

  /^[a-z0-9][-,\.a-z0-9]{4,29}$/i

説明 :

   /^                  Start of string
   [a-z0-9]            One character in the set a-z or 0-9 
                       (A-Z also valid since we specify flag i at the end
   [-,\.a-z0-9]{4,29}  A sequence of at least 4 and no more than 29 characters
                       in the set. Note . is escaped since it has special meaning
   $                   End of string (ensures there is nothing else
   /i                  All matches are case insensitive a-z === A-Z
于 2012-05-18T10:04:17.343 に答える
0

^\w[\w-,\.]{4}[\w-,\.]{0,25}$

これは次のように変換されます。

英数字で始まり、4 つの有効な文字、さらに最大 25 の有効な文字で始まる文字列に一致します。有効なのは英数字の「、」「-」または「.」です。

次の PowerShell スクリプトは、このルールの単体テストを提供します。

$test = "^\w[\w-,\.]{4}[\w-,\.]{0,25}$"

# Test length rules.
PS > "abcd" -match $test # False: Too short (4 chars)
False
PS > "abcde" -match $test # True: 5 chars
True
PS > "abcdefghijklmnopqrstuvwxyzabcd" -match $test # True: 30 chars
True
PS > "abcdefghijklmnopqrstuvwxyzabcde" -match $test # False: Too long
False

# Test character validity rules.
PS > "abcd,-." -match $test # True: Contains only valid chars
True
PS > "abcd+" -match $test # False: Contains invalid chars
False

# Test start rules.
PS > "1bcde" -match $test # True: Starts with a number
True
PS > ".abcd" -match $test # False: Starts with invalid character
False
PS > ",abcd" -match $test # False: Starts with invalid character
False
PS > "-abcd" -match $test # False: Starts with invalid character
False
于 2012-05-18T10:02:34.427 に答える
0
^([\d\w][\d\w.-]{4,29})$

作成: http://gskinner.com/RegExr/

于 2012-05-18T10:03:01.733 に答える