2012-07-19 36 views
1

我正在寫一個腳本JS將用於生成一個完成句子測驗的類型。正則表達式幫助:分詞完成句子測驗

_ __ _ __ _棕色狐狸跳過了懶惰的_ __ _ _

步驟1:用戶將一個文本框被呈現給放一個句子
步驟2:的句子將被分解成實際的話(沒有逗號,句號等)成數組。
步驟3:在背景中,我會通過每個和在錨將它們包裝循環<a />
步驟4:用戶將能夠點擊在一個或多個字標記他們讓測驗接受者完成。我會對此做一些驗證。
步驟5:最終的結果將是一個句子,其中包含一個隨機數(1-n)的額外字符所選單詞的空格,因此對於單詞長度沒有確切的提示。

大多數功能我可以,但我需要將句子拆分成確切的單詞(大概使用正則表達式)。

這裏有一些規則,逗號和句號應該被忽略以及任何特殊字符。我也在考慮限制輸入,因此不允許使用特殊字符來完成這個任務。單詞和連字符應該包含在單詞匹配中,因爲有些單詞包含這些單詞。

可能還有其他規則,我想不出如此非常高興你留下評論和建議他們。

我已經開始了一個基本的jsFiddle,它簡單地分隔空間。

感謝您的閱讀。

回答

1

拆分非話

一個字是字母,單引號和連字符的組合,別的重複是一個不字。

爲了實現這一目標,split聲明更改爲以下:

var textArray = text.split(/[^a-zA-Z'-]+/) 

Javascript won't split using regex,除非你使用/定義正則表達式。

爲了保留分隔符,請使用match捕獲它們,並按照捕獲的順序重新插入它們。

var splitArray = text.match(/[^a-zA-Z'-]+/) 
+0

這個作品,但我想保留標點符號,以便句子不被破壞。 – Marko 2012-07-19 04:20:15

+0

然後使用'text.match'捕獲分隔符,並在構建句子時重新插入它們。 – krlmlr 2012-07-19 05:49:14

+0

這將如何工作?你能舉個例子嗎? – Marko 2012-07-22 20:51:33

0

嗯...我有一個非常簡單的解決方案:

[\w'-]+ 

就是這樣。

此行

正常工作:

我喜歡2有 「冰淇淋」,​​花花公子的花花公子和-ettes。

是的,這是一個奇怪的句子。但它起到了測試用例的作用。嘗試一下。它將包括數字2作爲一個單詞。不知道你是否想要。只需在連字符旁邊添加您需要的任何其他特殊字符即可。