2012-07-19 40 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作为一个单词。不知道你是否想要。只需在连字符旁边添加您需要的任何其他特殊字符即可。