Javascript:RegExp土耳其字符问题
我正在研究javascript搜索功能Javascript:RegExp土耳其字符问题,javascript,jquery,html,Javascript,Jquery,Html,我正在研究javascript搜索功能RegExp是'\\b('+word+')\\b','ig'用于选择和获取位置设置的单词,但它只选择英语字符,不选择土耳其字符或任何字符 工作脚本: 不使用工作脚本: Javascript中的正则表达式不支持开箱即用的Unicode,这是您正在使用的土耳其语字符所必需的(尽管如此) 此外,非ASCII字符通常不支持边界规则(例如表达式中使用的\b标记),因此这也可能导致此问题。如果删除边界标记,以下使用的示例将按预期工作: 您可能还可以使用一个插件来添加一
RegExp
是'\\b('+word+')\\b','ig'
用于选择和获取位置设置的单词,但它只选择英语字符,不选择土耳其字符或任何字符
工作脚本:
不使用工作脚本:
Javascript中的正则表达式不支持开箱即用的Unicode,这是您正在使用的土耳其语字符所必需的(尽管如此) 此外,非ASCII字符通常不支持边界规则(例如表达式中使用的
\b
标记),因此这也可能导致此问题。如果删除边界标记,以下使用的示例将按预期工作:
您可能还可以使用一个插件来添加一些对处理Unicode字符的支持
一个更好的选择可能是库,它似乎添加了这个缺失的功能,可能值得一试。您需要将RegExp与
u
标记一起使用,但javascript不支持unicode正则表达式:(所以要解决这个问题,您应该重新定义\b
\ba
意味着[^\w]a
so表示土耳其语字符
[^\wışĞÜŞÖİ]
是关键
[^\wığüşöçĞÜŞÖÇİ](türkçe)[^\wığüşöçĞÜŞÖÇİ]
可以使用,但这一次在下面的中找不到任何türkçe
türkçe dili destekliyorum
要解决此问题,可以添加^
和$
(?:^|[^\wığüşöçĞÜŞÖÇİ])(türkçe)(?:[^\wığüşöçĞÜŞÖÇİ]|$)
就这样
注意:此正则表达式将匹配上一个字符和下一个字符。因此您需要重新放置它们。(^\wışşşĞşşşşşşşşşşĞşşşşşşôşşş354
并替换为$1$2$3
注意:您也可以使用向后看和向前看,但不幸的是javascript不支持向后看
var-word='İpsum';
var rgx=新RegExp(“(^\wışşşşŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠ;
$('p,p*').contents().filter(函数()){
返回this.nodeType==3;
}).each(函数({
$(this.replaceWith($(this.text().replace(rgx,“$1$2$3”));
});
变量位置=$('.match').map(函数(){
返回此.getBoundingClientRect().top;
}).get();
div{
字体大小:50px;
}
span.匹配{
背景:金;
}
我的朋友们,我的朋友们,我的朋友们,我的朋友们,我的朋友们,我的朋友们,我的朋友们,我的朋友们,我的朋友们,我的朋友们,我的朋友们,我的朋友们,我的朋友们,我的朋友们,我的朋友们,我的朋友们,我的朋友们,我的朋友们
你能给我举一个关于XRegExp的例子吗?我个人对它不太熟悉,尽管看起来你可以添加字符集包,它会增加对匹配这些字符集的支持。但是,如果你注意到我更新的响应,那么真正的问题很可能是边界标记\b
的使用,它不支持非ASCII字符,即您的土耳其语字符。谢谢,多根:)