jquery-textcomplete不使用Unicode字符,并且缺少空格

1.我正在尝试使用带有Unicode字符串数组的jquery-textcomplete。 当我输入英文单词时,它可以正常工作,但不建议使用Unicode单词。 我认为问题在于“术语” 。 检查以下代码,请帮助我:

var words = ['සහන', 'වනක', 'google', 'suresh namal', 'facebook', 'github', 'microsoft', 'yahoo', 'stackoverflow']; $('textarea').textcomplete([{ match: /(^|\s)(\w{2,})$/, search: function (term, callback) { callback($.map(words, function (word) { return word.indexOf(term) === 0 ? word : null; })); }, replace: function (word) { return word + ' '; } }]); 

JS小提琴

2.此外,返回键存在问题。 当我在‘stackoverflow 之后输入‘google’时 ,它会显示为‘stackoverflowgoogle’‘stackoverflow’‘google’之间没有空格。 我怎么解决这个问题? 谢谢。

  1. 问题出在你的match选项中,只有匹配的拉丁词( \w

    \w匹配包括下划线在内的任何字母数字字符。 相当于[A-Za-z0-9_]。

    参考

    您还应该在RegExp中包含unicode字符,例如: \u0000-\u007f


  1. 这是因为在RegExp中使用\s (注意小“s”),它也替换了关键字前面的“空格”:

    \s匹配单个空格字符, 包括空格(…)

    参考

    您可以使用\S (大写字母“S”)匹配空格以外的单个字符,以及与前一个空格匹配0次或更多次的* (星号)。


它可能不是一个最漂亮的RegExp,但应该为你做的工作:

 $('textarea').textcomplete([{ match: /(^|\S*)([^\u0000-\u007f]{2,}|\w{2,})$/, search: function (term, callback) { callback($.map(words, function (word) { return word.indexOf(term) > -1 ? word : null; })); }, replace: function (word) { return word+' '; } }]); 

的jsfiddle