正则表达式没有根据浏览器搜索中文字符给出结果

时间:2017-08-09 07:40:17

标签: javascript regex

我在正则表达式中面临一个问题,

请参阅以下链接(在Chrome浏览器中)。

https://regex101.com/r/Cb3V25/1

在输出中只有一个匹配。但是如果我用这个に日语字符进行浏览器搜索(Ctrl + F),那么它也会突出显示这个日本字符。

我需要突出显示它们。这样做的方法是什么?还有其他角色有类似的问题,所以需要回答一般所有这些角色。

2 个答案:

答案 0 :(得分:0)

请查看这是否是您想要的:

https://regex101.com/r/Cb3V25/2

答案 1 :(得分:0)

ニ是に的片假名版本(这些都发音为#34; ni")。 Chrome显然使用Ctrl-F实现假名折叠。换句话说,它发现正在搜索任何假名字符的片假名和平假名版本。我不知道如何打开或关闭它;我不认为它可以。

Chrome也会做zenkaku / hankaku折叠。也就是说,搜索1(hankaku)将找到1(zenkaku,所谓的"全宽"),反之亦然。这与搜索罗马字母时的大小写不敏感类似。

此行为由Unicode Collation Algorithm (UCA)定义。我无法确定浏览器是否应该实现它,在这种情况下,在Firefox中缺少这种行为将是一个错误,或者它是否留给了浏览器;我怀疑后者。这是一个旧的Mozilla错误报告,要求使用此功能:https://bugzilla.mozilla.org/show_bug.cgi?id=71893

如果出于某种原因,您确实想要在Chrome中进行页内搜索时区分平假名和片假名,则可以安装一个在页面上提供正则表达式搜索的扩展程序。

如果您的目标是使用正则表达式搜索进行假名折叠,那是不可能的。对于正则表达式,这是两个不同的字符,正如另一个答案所提到的那样。没有"忽视平假名/片假名的区别"我知道的任何正则表达式的旗帜,也没有"忽略zenkaku / hankaku的区别"旗。但是,你可以编写自己的小程序来相对容易地构建这样的正则表达式。