gpt4 book ai didi

javascript - jquery-textcomplete 不适用于 Unicode 字符,并且缺少空格

转载 作者:行者123 更新时间:2023-11-29 15:35:56 26 4
gpt4 key购买 nike

1. 我正在尝试将 jquery-textcomplete 与 Unicode 字符串数组结合使用。当我输入英文单词时,它可以正常工作,但没有建议任何 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 Fiddle

2. 另外,返回键也有问题。当我在 'stackoverflow' 之后输入 'google' 时,它看起来像 'stackoverflowgoogle''stackoverflow''google' 之间没有空格。我该如何解决?谢谢。

最佳答案

  1. 问题出在您的 match 选项上,其中仅匹配拉丁词 (\w)

    \w matches any alphanumeric character including the underscore. Equivalent to [A-Za-z0-9_].

    Reference

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


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

    \s matches a single white space character, including space (...)

    Reference

    您可以在那里使用 \S(大写“S”)匹配单个字符而非空格,以及 *( asterisk) 与前面的空格匹配 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

关于javascript - jquery-textcomplete 不适用于 Unicode 字符,并且缺少空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29124968/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com