3

先頭または末尾に空白を入れず、途中に空白を許可し、文字入力を 1 つだけ許可する正規表現:

私が持っている最も近いものは次のとおりです。^([^\s])([\sa-zA-Z0-9_\-]*)([^\s])$

これの問題は、入力が 3 文字以上の場合にのみパスすることです。1 つの文字を受け入れてパスする必要があります。例えば:

以下は合格する必要があります(読みやすくするために " を使用します。文字列では必須ではありません)

"A"
"A B"
"Hello There"

以下は失敗するはずです

" A"
"A "
" A "
" test"

また、AZ az 0-9 - _ のみを許可する必要があり、中間セクションにスペースを追加しますが、開始または終了には追加しません

何か案は?

ありがとう

4

2 に答える 2

12

オプションでスペースの複数のグループが続き、その後にスペース以外が続きます。

^[^\s]+(\s+[^\s]+)*$

編集:

文字制限を含めるには、スペース以外のクラスを使用可能な文字に置き換えます。

^[-_a-zA-Z0-9]+(\s+[-_a-zA-Z0-9]+)*$

また、Unicode にやさしく、次のようなものを使用することを検討してください。

^[-_\p{Alnum}]+(\s+[-_\p{Alnum}]+)*$

(正規表現インタープリターが許可していると仮定します)。

于 2013-02-05T19:19:46.113 に答える
2

最初のスペース以外の文字の後のすべてをオプションにします。

^(?=\S)[a-zA-Z0-9_\s-]*\S$
于 2013-02-05T19:20:55.087 に答える