2009-09-15 49 views
0

我正在使用正則表達式將輸入到文本框字段中的單詞限制爲250-500個單詞。用字限制範圍正則表達式的問題

(((^\s*)*\S+\s+)|(\S+)){250,500}

由於我對正則表達式一無所知,我從另一個網站上覆制了它。無論輸入多少個單詞,我都會收到驗證錯誤。

這裏是一個形式是,如果你想試試自己的頁面:

http://mlknew.timpecoraro.com/dreamers-community/win-a-dream/

該網站運行WordPress的與cforms插件,所以我只能用正則表達式驗證。

感謝您的幫助!

回答

1

如何

^\s*(\S+\s+){250,499}\S*$ 

這將第一錨繩在開始和結束的字符串進行搜索。然後可以選擇匹配空格(如果字符串以一些開頭)。然後匹配249-499次(一個或多個非空格字符)+(一個或多個空格字符,包括換行符)。然後匹配非空格字符的可選塊以達到500(但如果文本最後包含空格,也不會失敗)。

+0

無論輸入的單詞數是多少,仍然會收到驗證錯誤。除了輸入的具體正則表達式之外,這可能是一個問題。 。 。 。 – kdietz

+0

想通了。 。 。該插件正在刪除斜槓。好的正則表達式! – kdietz

0

你爲什麼不嘗試

(\w+\s+){250,500}

使用str-word-count會更好,如果你的WordPress託管的PHP版本高於4.3。

+0

不,這將在「單詞」類中準確匹配250個連續字符。 –

+0

爲什麼你不使用\ s + regexp分割並計算結果數量? – RageZ

+0

like $ array = preg_split('/ \ s + /',$ subject); (count($ array)<250 || count($ array)> 500){ echo「bad」; } – RageZ