2016-09-27 12 views
3

150単語以下を許可する正規表現が必要です。私はいくつかの表現を試しましたが、それらのすべては文字ではなく単語を数えます。150単語数正規表現

私の試み:

^(?:\b\w+\b[\s\r\n]*){1,150}$ 
^(?:\w+\W+){0,150}(?:\w+)$ 
^(\w*\W*){0,250}$ 
+0

あなたの言葉遣いは少し混乱ですが、私が正しく物事を理解していれば、おそらく ' "(+/Wの* W /)\ Wは* {0150}" のようなものを'欲しいです。 – XenoRo

+0

ありがとうございます。私は正規表現で、ユーザーが150以上の単語を書くべきではないということを意味しました。このバリデーションを自分のフォームのテキスト領域に設定したいと思います。私はこれを試してみる。本当に感謝します – KH2301

+0

すべての単語が一緒に固執すればどうなりますか?間にスペースはありませんか? – revo

答えて

0

あなたは正規表現を使用して入力を制限することによって何を意味するかわかりません。正規表現は、パターンの抽出やマッチングに使用されます。この情報を使用して入力を制限することができます。

以下の正規表現は、150個の「単語」と一致します。それぞれ6つの単語と7つのワードの作ったとして、それは期間の前に、スペースに、以下の文章をカウントしますので、私はあなたが削除することができます

I am happy. This is good 
I am happy . This is good 

、単語のための二重引用符を使用し

^(?:\s*\S+){1,150}$ 

^ Anchor to the beginning of the input 
$ Anchor to the endof the input 
\s: Space character 
\S: Non space character 
(?:xxx): Grouping without capturing 
{1,150} : Match 1 - 150 instances of the preceding expression 

あなたが望むなら、最初の150単語を抽出するだけで、式から^と$記号を取り除くことができます。

+0

ありがとうございました。私は正規表現で、ユーザーが150以上の単語を書くべきではないということを意味しました。このバリデーションを自分のフォームのテキスト領域に設定したいと思います。私はこれを試してみる。本当にありがたいです – KH2301

+0

この正規表現には問題があります...これは単語ではなくセパレータ(スペース)文字に基づいているため、単語としての句読点などの空白でない空白文字をカウントし、ハイフン付きの単一のワード。 – XenoRo

0
^\w+(?:\s+\w+){0,149}$ 

これはあなたのために行う必要があります。

5のデモをご覧ください。

https://regex101.com/r/bT4kP8/2

+0

ありがとうございます。私はこれを試してみる。本当にありがとう – KH2301

+0

この正規表現には問題があります。入力が単語でない文字で始まる場合、正規表現全体が失敗します。また、単語間の空白文字だけを扱うことができ、最初の単語の間に少なくとも1つの空白文字が必要です。これにより、正規表現が句読点やハイフンで失敗するようになります。 – XenoRo

+0

@AlmightyR OPがそれを望むなら、それを追加します.... – vks

関連する問題