gpt4 book ai didi

JavaScript 正则表达式获取句子中每个单词的第一个字符(波斯语和英语句子)

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:11:01 24 4
gpt4 key购买 nike

假设我有以下字符串:

var englishSentence = 'Hellow World';
var persianSentence = 'گروه جوانان خلاق';

对于英语,我使用以下正则表达式,但我如何编写正则表达式来支持波斯语或它们的混合。

  var matches = englishSentence.match(/\b(\w)/g);
acronym = matches.join('');

最佳答案

根本原因

无法匹配 Unicode 字边界,\b即使在 ECMA 2018 中也不支持 Unicode。

解决方案

对于 ECMA2018 兼容浏览器(例如,截至 2018 年 4 月的最新版 Chrome),您可以使用:

var englishSentence = 'Hellow World';
var persianSentence = 'گروه جوانان خلاق';
var reg = /(?<!\p{L}\p{M}*)\p{L}\p{M}*/gu;
console.log(englishSentence.match(reg));
console.log(persianSentence.match(reg));

详情

  • (?<!\p{L}\p{M}*) - 如果有一个 Unicode 字母后跟 0+ 变音符号,则匹配失败的负面回顾
  • \p{L}\p{M}* - 一个 Unicode 字母后跟 0+ 变音符号
  • gu - g - 全局,搜索所有匹配项,u - 使模式识别 Unicode。

如果您需要在旧版/其他浏览器中使用相同的功能,请使用 XRegExp :

function getFirstLetters(s, regex) {
var results=[], match;
XRegExp.forEach(s, regex, function (match, i) {
results.push(match[1]);
});
return results;
}
var rx = XRegExp("(?:^|[^\\pL\\pM])(\\pL\\pM*)", "gu");
console.log(getFirstLetters("Hello world", rx));
console.log(getFirstLetters('گروه جوانان خلاق', rx));
<script src="https://cdnjs.cloudflare.com/ajax/libs/xregexp/3.2.0/xregexp-all.js"></script>

详情

  • (?:^|[^\\pL\\pM]) - 匹配字符串开头的非捕获组 ( ^ ) 或除 Unicode 字母或变音符号以外的任何字符
  • (\\pL\\pM*) - 第 1 组:任何 Unicode 字母后跟 0+ 变音符号。

在这里,我们需要提取第 1 组值,因此 .push(match[1])在每场比赛中。

关于JavaScript 正则表达式获取句子中每个单词的第一个字符(波斯语和英语句子),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49793359/

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