0

このパターンを検証するために正規表現を作成しようとしています。

これはテキストです
[TEXT][SINGLESPACE] [TEXT] [SINGLE SPACE] [TEXT] [SINGLESPACE][TEXT]個人名
WilliamSmith
[TEXT] [SINGLESPACE][TEXT]
別のテキスト[TEXT][SINGLEスペース][テキスト][シングルスペース]

パターンには次のルールが含まれます。

  • スペースから始めない
  • 文字列には、単語間のスペースを1つだけ含めることも、文字列の最後にスペースを1つ含めることもできます。

私はこの正規表現を持っています

/ ^ [[A-Za-z0-9] + \ s?[A-Za-z0-9] *] {0,10} $ /

でも、パターンを繰り返して長さ10にする方法がわかりません

** 編集 **

より理解しやすくするために、keypressイベントを入力テキスト要素にバインドするjQueryプラグインに取り組んでおり、テキストが押された各キーで検証する式を追加します。これは、マスクされたテキストボックスのようなものなので、ルールを適用します。英数字と単語間のスペースのみを受け入れるマスクの場合、式が必要なのは、このように押された各キーを検証することです。

T
Th
This
This
This i
This is
This is
This is a
This is a
This is at
This is a te
This is tex
This is a text

4

2 に答える 2

2

わかりました。要件を正しく理解できたと思います。

まず、これは 1 つの単語とそれに続く 1 つのスペースに一致します。

/[a-zA-Z01-9]+ /

それを10回繰り返せばいいじゃないですか。最初から始めますか?

/^([a-zA-Z01-9]+ ){10}/

しかし、末尾のスペースはオプションですよね?

/^([a-zA-Z01-9]+ ){9}[a-zA-Z01-9]+ ?$/

\wまた、よりも使用した方がよいでしょう[a-zA-Z01-9]1また、任意の空白に一致します。これは、スペースのみ\sに一致するよりも優れている可能性があります。

最大10 回という意味であれば{0,9}{9}.

1 \wは、元のパターンでは一致しないさまざまな国際文字だけでなく、アンダースコアにも一致します。それが意図的かどうかわからなかったので、私はそれを使用しませんでしたが、意図的でない場合\wは、より良い選択です.

于 2012-08-01T19:53:32.577 に答える
1

最大 10 回繰り返される式をグループ化するには、文字クラス区切り文字 ( )の代わりにグループ( を使用) を使用します。()[]

^\w+(\s\w+){0,9}\s?$
于 2012-08-01T19:53:30.317 に答える