Rangy如何扩展没有符号?

时间:2015-03-25 16:10:25

标签: javascript regex range rangy

我正在尝试取消选择在选择之前或之后出现的标点符号,并使用单词expand function。例如,我有这个注释:

  

(56.87%),α-cad inol(粗体文字突出显示文字“,”包括在内)

我尝试了以下内容:

  

(56.87%),α-cadinol (粗体文字突出显示文字)

我尝试过以下方法:

        var sel = rangy.getSelection();
        var range = sel.getRangeAt(0);

        var selectedText = range.text();
        // Trim start
        var match = /^\s*\.*\,*\"*\'*\;*\“*\-*\s*/.exec(selectedText);
        if (match) {
            range.moveStart("character", match[0].length);
        }

        // Trim end
        match = /\s*\.*\,*\"*\'*\;*\”*\-*\s*$/.exec(selectedText);
        if (match) {
            range.moveEnd("character", -match[0].length);
        }
        sel.setSingleRange(range);

        sel.expand("word", {
            trim: true
        });

但不能正常工作。第一部分单独工作,但第二部分不起作用,因为它导致以下结果:

  

(56.87 %),α-cadinol (粗体文字突出显示文字)

1 个答案:

答案 0 :(得分:1)

一切看起来都不错。问题是Rangy用来确定单词构成单词的默认正则表达式非常简单。幸运的是,您可以在传递给扩展的选项中覆盖它。这里的例子也只是作为解决当前问题的起点;对于一般用途来说显然过于简单,但应该作为一个起点。

sel.expand("word", {
    trim: true,
    wordOptions: {
        wordRegex: /[a-z0-9α]+(['\-][a-z0-9α]+)*/gi
    }
});