1

我正在用 JS 编写一个脚本,用于生成完整的句子类型的测验。

_ __ _ __ _棕色狐狸跳过懒惰的_ __ _ _

第 1 步:将向用户显示一个文本框以输入句子。
第 2 步:将句子分解为实际单词(无逗号、句号等)放入一个数组中。
第 3 步:在后台,我将遍历每个单词并将它们包裹在锚点中<a />
第 4 步:用户将能够单击一个或多个单词来标记它们以供测验者完成。我会围绕这个做一些验证。
第 5 步:最终结果将是一个带有空格的句子,这些单词是用随机数 (1-n) 的额外字符选择的单词,因此没有单词长度的确切提示。

大多数功能我都可以使用,但我需要将句子拆分成确切的单词(大概使用正则表达式)。

对此有一些规则,应忽略逗号和句号以及任何特殊字符。我也在考虑限制输入,以便不允许特殊字符使这变得更容易。单引号和连字符应包含在单词匹配中,因为某些单词包含这些。

可能还有其他规则我想不出,所以很高兴您发表评论并提出建议。

我从一个基本的jsFiddle开始,它只是用空格分隔。

谢谢阅读。

4

2 回答 2

1

非词分割

单词是字母、单引号和连字符的组合,其他任何重复的都是非单词。

为此,请将split语句更改为以下内容:

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

Javascript 不会使用 regex 进行拆分,除非您使用它/来定义正则表达式。

为了保留分隔符,请使用捕获它们match,然后按照捕获的顺序重新插入它们。

var splitArray = text.match(/[^a-zA-Z'-]+/)
于 2012-07-19T00:29:36.533 回答
0

嗯...我有一个非常简单的解决方案:

[\w'-]+

而已。

适用于这条线:

我喜欢 2 有“冰淇淋”,​​花花公子和花花公子。

是的,这是上面的一个奇怪的句子。但它可以作为一个测试用例。试试看。它将在那里包含数字 2 作为单词。不确定你是否想要那个。只需在连字符旁边添加您需要的任何其他特殊字符。

于 2012-07-19T04:17:19.223 回答