2016-09-27 53 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「字」的聲明。

^(?:\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 

我用雙引號的字,因爲它會計算下面的句子分別由6個字和7個字,由於前一段的空間

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

您可以刪除如果您願意,可以從表達式中簡單地提取前150個單詞。

+0

非常感謝。我的意思是,用正則表達式用戶不應該寫超過150個單詞。我想將此驗證設置爲我的表單上的文本區域。我會試試這個。真的很感謝它 – KH2301

+0

這個正則表達式會有問題...因爲這是基於分隔符(空格)字符而不是單詞,這將計算鬆散的非空格字符,如標點符號作爲單詞,字。 – XenoRo

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

這應該爲你做。

觀看演示的5

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

+0

非常感謝。我會試試這個。真的很感謝 – KH2301

+0

這個正則表達式有問題。如果輸入以非單詞字符開頭,則整個正則表達式會失敗。它也只能處理單詞之間的空格字符,並且在第一個單詞之後的任何單詞之間至少需要一個空格字符,這會使正則表達式在任何標點符號或縮寫詞上失敗。 – XenoRo

+0

@AlmightyR我會補充一點,如果OP希望這樣.... – vks