用于检查仅一种语言的符号的正则表达式

时间:2017-05-13 12:50:44

标签: javascript regex

我希望正则表达式禁止使用不同的语言; 它应该只允许俄语或英语。永远在一起!

例如: Яроslav

JohnДое

我现在的表情:

^([a-zA-Z]|[а-я])+$

我想它会是这样的:

{{1}}

2 个答案:

答案 0 :(得分:0)

使用正则表达式的唯一方法是使用字符范围。

假设俄语字符范围为а-яё且英文字符范围为\u0041-\u007a(两者都可以缩小或扩展),您可以使用以下正则表达式来检查字符串是否仅包含俄语字符或英语字符而不是两者(加上任何空白字符):

^[а-яё\s]+$|^[\u0041-\u007a\s]+$

locale

但是英文字符也用于很多种语言。

例如,在法语中café将被排除,但不包括 bonjour ,这不是英语单词。

答案 1 :(得分:0)

我想你想要失败的任何包含英文和俄文字母的字符串。 /[a-z][^а-яё]*[а-яё]|[а-яё][^a-z]*[a-z]/i正则表达式就是这样做的,所以你需要做的就是否定RegExp#test结果:



var ss = ["Яроslav", "John Дое", "Good string", "Вот так строка, молодец!"];
var rx = /[a-z][^а-яё]*[а-яё]|[а-яё][^a-z]*[a-z]/i;
for (var s of ss) {
  console.log("Testing", s, ":", !rx.test(s));
}




请参阅regex demo

<强>详情:

  • [a-z] - 一个ASCII字母(请注意,由于/i不区分大小写的修饰符,它将匹配大写字母)
  • [^а-яё]* - 俄语字母以外的0个字符
  • [а-яё] - 俄文字母
  • | - 或
  • [а-яё][^a-z]*[a-z] - 一个俄文字母,后面跟着ASCII字符以外的0 +字符,然后是ASCII字母。