JavaScript正则表达式获取波斯语/英语字符串最多3个单词的第一个字母

时间:2018-05-02 09:56:04

标签: javascript regex

enter image description here我在波斯语和英语中有以下字符串。

1-گروهجوانانخلاق

2-(نی(حیایتکنندهرسانههایآزادافغانستان

3-نی| حمایتکنندهرسانههایآزادافغانستان

4- NKCC(Nawi Kunduz建筑公司)

5-阿富汗发展和登记处服务

我想要做的是获得每个句子最多3个单词的第一个字母。 我尝试过:

\b(?:(?:[a-zA-Z0-9])|(?:[\u0621-\u0628\u062A-\u063A\u0641-\u0642\u0644-\u0648\u064E-\u0651\u0655\u067E\u0686\u0698\u06A9\u06AF\u06BE\u06CC]))

以上的正则表达式仅用于英语句子,我的主要问题是\b用于波斯语句子,并强制只考虑最多3个单词。

1 个答案:

答案 0 :(得分:1)

您可以构建一个首先匹配字符串开头或除字(字母和数字)字符以外的任何字符的正则表达式,然后捕获第一个字母/数字,但只收集前3个匹配项:

var strs = ["|گروه جوانان خلاق", "(نی (حمایت کننده رسانه های آزاد افغانستان", "نی | حمایت کننده رسانه های آزاد افغانستان", "NKCC (Nawi Kunduz Construction Company)","5- Afghanistan Development And Registry Services"];
var pblock = "\\u0621-\\u0628\\u062A-\\u063A\\u0641-\\u0642\\u0644-\\u0648\\u064E-\\u0651\\u0655\\u067E\\u0686\\u0698\\u06A9\\u06AF\\u06BE\\u06CC";
var rx = new RegExp("(?:^|[^a-zA-Z0-9" + pblock + "])([a-zA-Z0-9" + pblock + "])", "g");
for (var s of strs) {
  var m, cnt=0, res=[];
  while (m=rx.exec(s)) {
    if (cnt < 3) {
  		res.push(m[1]);
      cnt++;
    } else break;
  }
  console.log(s, res);
  
}