1

次のような文字列の正規表現が必要です。

  1. 文字、数字を使用できます
  2. 次のような特殊文字を無視します: < > { } [ ] # ~ ^/\"
  3. 純粋な数字を持つことはできません
  4. 最大サイズは 20 文字です

有効な回答 a) "hello world 123 -" b) "123 hello - world" c) "- hello 123 world"

無効な回答 a) "123456" b) "123456 " c) "abc>>>" c) "abc123>>>" d) ">>>>" 私が思いついた最も近いものは:

^([A-Za-z0-9 '\-!\£\$:;%&amp;\*\(\)_=\+,.\?@\n\r\t]{1,20}$

しかし、「数字だけではダメ」のポイント3は無効になります。

何か案が?

4

1 に答える 1

1

この先読みベースの正規表現を使用できます。

^(?![0-9]+$)(?!.*?[<>{}\[\]#~^\/"]).{1,20}$

^ - Line start
(?![0-9]+$) - Not just numbers
(?!.*?[<>{}\[\]#~^\/"]) - Doesn't have these special characters
.{1,20} - 1 to 20 characters
$ - Line end
于 2013-11-14T12:19:43.817 に答える