Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 乌克兰字母的正则表达式。如何用大写字母分隔西里尔字母?_Javascript_Regex_String - Fatal编程技术网

Javascript 乌克兰字母的正则表达式。如何用大写字母分隔西里尔字母?

Javascript 乌克兰字母的正则表达式。如何用大写字母分隔西里尔字母?,javascript,regex,string,Javascript,Regex,String,我有一根字符串,里面有一些西里尔文字。每个都以大写字母开头 var str = 'ХєлпМіПліз'; 我找到了这个解决方案str.match(/[А-Я][а-а]+/g) 但它返回的是[“ППП”]而不是[“ПєПП”,“Мі”,“Піз”]。似乎它不识别乌克兰字母('і','є'),只识别俄语 那么,我必须如何更改正则表达式以包含乌克兰字母呢?解决这个问题的方法是查看以确定所需的字符范围。例如,如果我使用以下模式: str.match(/[А-Я][а-яєі]+/g) 它适用于示

我有一根字符串,里面有一些西里尔文字。每个都以大写字母开头

var str = 'ХєлпМіПліз';
我找到了这个解决方案
str.match(/[А-Я][а-а]+/g)

但它返回的是
[“ППП”]
而不是
[“ПєПП”,“Мі”,“Піз”]
。似乎它不识别乌克兰字母('і','є'),只识别俄语


那么,我必须如何更改正则表达式以包含乌克兰字母呢?

解决这个问题的方法是查看以确定所需的字符范围。例如,如果我使用以下模式:

str.match(/[А-Я][а-яєі]+/g)

它适用于示例字符串。(对不起,我不知道乌克兰字母)

使用
\p{Lu}
匹配大写字母,
\p{Ll}
匹配小写字母,或者使用
\p{L}
匹配任何字母

更新: 这只适用于Java,不适用于JavaScript。
别忘了在你的regexp中包括“apostrof”、“ji”

[А-Я][а-Я]
实际上不包括乌克兰字母

“є”是
\u044f
,“є”是
\u0454
,“i”是
\u0456
\u044
表示欧元)。您应该手动将它们包含在正则表达式中:


/[А-ЯЯI][а-єI]+/g
乌克兰字母表有四个不同于西里尔字母表的单词,例如:[і,є,ї,ґ],也可以包含一个单引号

"ґуля, з'їсти, істота, Європа".match(/[а-яієїґ\']+/ig)

i
,并将匹配大写字母,如“ццца”

[А-Я]
不是西里尔字母,它只是俄语

西里尔文是一种书写系统。它用在许多语言的字母表中。 (如拉丁语:西欧语言的字符集、东欧语言和c语言的字符集)

要同时使用俄语和乌克兰语,您将获得
[А-ЯҐЇ]

添加白俄罗斯语:
[А-ЯҐЇЎ]

对于所有西里尔文字符(包括巴尔卡尼亚语言和古西里尔文),您可以通过Unicode子集类获得它,如:
\p{iscrylic}


要单独处理乌克兰问题:

[А-ЩгггггЯ-аєїї]
似乎是完整的乌克兰字母表,每种情况下有33个字母

撇号不是字母,但偶尔也包括在字母表中,因为它对下一个元音有影响。 撇号是单词的一部分,而不是分隔符。它可以通过以下几种方式显示:

27 "'" APOSTROPHE 60 "`" GRAVE ACCENT 2019 "’" RIGHT SINGLE QUOTATION MARK 2bc "ʼ" MODIFIER LETTER APOSTROPHE 27“'”撇号 60“`”重口音 2019“'”右单引号 2bc“的”修饰语字母撇号 也许还有更多


是的,撇号有点复杂。它没有通用的标准。

适用于乌克兰字母“i”和其他字母

python
r's/[^а-яА-Я.!?]/./g+' 

只有乌克兰语,没有俄语

[бвгґджзклмнпрстфхцчшщйаеєиіїоуюяь]/gi

@H2OOOOO:不;他只需要更改正则表达式以包含他想要的字符。这是个好主意,但是javascript没有这些字符类。oops。很抱歉没有提到是js。这适用于Java,甚至我的解决方案也不包括乌克兰语的“apostrof”,谢谢你的回答。字母可能是正确的,但它们不符合其他要求(大写字母后跟小写字母)。因此,我建议更新您的答案,以包括其他要求以及。