回答:
キャラクタークラスにスペースを追加するだけです。
^[a-zA-Z0-9_ ]*$
上記は正確ではありません。起因するという事実に*
手段がよりゼロか、それは1つが、通常は一致するわけではないであろうと、次の例すべてに一致します。
もともと私は、OPが厳密さを気にする必要がないような基本的な質問をしているので、そのような詳細を検討する価値があるとは思いませんでした。質問がいくつかの人気を得た今、私は言いたい...
これは、私の味では(を使用しない場合\w
)、次のように変換されます。
^[a-zA-Z0-9_]+( [a-zA-Z0-9_]+)*$
(@stemaに関係なく投票してください。)
この(および@stemaの)回答について注意すべき点:
単語間に複数のスペースを許可したい場合(たとえば、誤って2つのスペースを許可したい場合、またはPDFからコピーして貼り付けたテキストで作業している場合)、+
スペースの後にを追加します。
^\w+( +\w+)*$
タブと改行(空白文字)を許可する場合は、スペースを\s+
:に置き換えます。
^\w+(\s+\w+)*$
ここでは、+
デフォルトでをお勧めします。たとえば、Windowsの改行は2つの空白文字で構成されている\r\n
ので、+
両方をキャッチする必要があります。
使用している正規表現の方言を確認してください。* Javaのような言語では、あなたのバックスラッシュをエスケープする必要があります、つまり、 \\w
と\\s
。古い以上の基本的な言語やユーティリティ、のようにsed
、\w
と\s
定義されていないので、文字クラス、でそれらを書くなど [a-zA-Z0-9_]
して[\f\n\p\r\t]
、それぞれ。
*この質問にタグが付いていることを知っていますvb.net、しかし25,000以上のビューに基づいて、この質問に出くわしているのはそれらの人々だけではないと思います。現在、これは検索フレーズである正規表現スペースワードのグーグルでの最初のヒットです。
1つの可能性は、acheong87が示唆するように、文字クラスにスペースを追加することです。これは、5つのスペースで始まる文字列、またはスペースのみで構成される文字列も許可するため、パターンの厳密さによって異なります。
他の可能性はパターンを定義することです:
私は\w
これをほとんどの正規表現のフレーバーで使用します[a-zA-Z0-9_]
(一部ではUnicodeベースです)
^\w+( \w+)*$
これにより、一連の少なくとも1つの単語が許可され、単語はスペースで区切られます。
^
文字列の先頭に一致
\w+
一連の少なくとも1つの単語文字に一致
( \w+)*
0回以上繰り返されるグループです。グループでは、スペースの後に一連の少なくとも1つの単語文字が続くことを期待しています
$
文字列の終わりに一致
試してみてください:
^(\w+ ?)*$
説明:
\w - alias for [a-zA-Z_0-9]
"whitespace"? - allow whitespace after word, set is as optional
ggggggggggggggggggggggggggggggggggggg;
過度のバックトラックが原因で、正規表現が結果に到達するまでに非常に長い時間がかかります。
前後のスペースは不要だと思います。つまり、正規表現を「最初の文字」、「途中の文字」、「最後の文字」に分割する必要があります。
^[a-zA-Z0-9_][a-zA-Z0-9_ ]*[a-zA-Z0-9_]$
または、perlのような構文を使用する場合:
^\w[\w ]*\w$
また、空の文字列も許可するように意図的に正規表現を使用した場合は、全体をオプションにする必要があります。
^(\w[\w ]*\w)?$
単一のスペース文字のみを許可する場合は、少し異なります。
^((\w+ )*\w+)?$
これは、0..nの単語の後に単一のスペースが続き、さらにスペースのない1つの単語に一致します。また、空の文字列を許可するために、全体をオプションにします。
\s
同等ではありません。\s
スペースだけではありません。
この正規表現
^\w+(\s\w+)*$
単語間にスペースを1つだけ入れ、先頭または末尾のスペースは入れません。
以下は正規表現の説明です。
^
文字列の開始位置をアサートします\w+
任意の単語文字に一致 [a-zA-Z0-9_]
+
1回から無制限の回数まで、可能な限り多くの回数、必要に応じて差し戻します[貪欲](\s\w+)*
*
ゼロから無制限の回数まで、可能な限り多くの回数、必要に応じて返却します[貪欲]\s
空白文字に一致 [\r\n\t\f ]
\w+
任意の単語文字に一致 [a-zA-Z0-9_]
+
1回から無制限の回数まで、可能な限り多くの回数、必要に応じて差し戻します[貪欲]$
文字列の最後に位置をアサートするこれは最初にスペースを許可しません。ただし、単語間にスペースを許可します。単語間の特殊文字も使用できます。FirstNameおよびLastNameフィールドに適した正規表現。
\w+.*$
これらの想定される答えの多くをよく見ていた...
...また、スタックオーバーフローやその他のサイトを調べて、開始または末尾の空白がなく、完全にアルファ文字の単語の間に1つのスペースしかない文字列に一致する正規表現を探した後のbupkis 。
^[a-zA-Z]+[(?<=\d\s]([a-zA-Z]+\s)*[a-zA-Z]+$
したがって、英数字に簡単に変更できます。
^[a-zA-Z0-9]+[(?<=\d\s]([a-zA-Z0-9]+\s)*[a-zA-Z0-9]+$
(これは単一の単語とは一致しませんが^[a-zA-Z0-9]+$
、さらに単一の単語をキャッチする必要がある場合は、switch / if-elseを単純に使用するだけです。)
楽しむ:D
[(?<=\d\s]
マッチする1つの文字:(
、?
、<
、=
、数字、または空白文字、そしてそれはあなたが何を意味することはできません。後読みであると想定されていた場合、それはであるべきですが(?<=\d\s)
、そこでは意味がありません。正規表現は決して一致しません。