我正在尝试取消选择在选择之前或之后出现的标点符号,并使用单词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 (粗体文字突出显示文字)
答案 0 :(得分:1)
一切看起来都不错。问题是Rangy用来确定单词构成单词的默认正则表达式非常简单。幸运的是,您可以在传递给扩展的选项中覆盖它。这里的例子也只是作为解决当前问题的起点;对于一般用途来说显然过于简单,但应该作为一个起点。
sel.expand("word", {
trim: true,
wordOptions: {
wordRegex: /[a-z0-9α]+(['\-][a-z0-9α]+)*/gi
}
});