我正在尝试检测一个字符串是否包含俄文(西里尔字母)字符。我正在使用以下代码:
term.match(/[\wа-я]+/ig);
但是它不起作用 - 实际上它只是原封不动地返回字符串。
有人可以帮忙提供正确的代码吗?
谢谢!
我正在尝试检测一个字符串是否包含俄文(西里尔字母)字符。我正在使用以下代码:
term.match(/[\wа-я]+/ig);
但是它不起作用 - 实际上它只是原封不动地返回字符串。
有人可以帮忙提供正确的代码吗?
谢谢!
使用模式/[\u0400-\u04FF]/
可以涵盖更多的西里尔文字符:
// http://jrgraphix.net/r/Unicode/0400-04FF
const cyrillicPattern = /^[\u0400-\u04FF]+$/;
console.log('Привіт:', cyrillicPattern.test('Привіт'));
console.log('Hello:', cyrillicPattern.test('Hello'));
更新:
在一些新的浏览器中,您可以使用Unicode属性转义。
西里尔文使用与上述描述相同的范围:U+0400..U+04FF
const cyrillicPattern = /^\p{Script=Cyrillic}+$/u;
console.log('Привіт:', cyrillicPattern.test('Привіт'));
console.log('Hello:', cyrillicPattern.test('Hello'));
也许你本意是要使用 RegExp
的 test
方法?
/[а-яА-ЯЁё]/.test(term)
请注意,JavaScript正则表达式并不真正支持Unicode,这意味着i
标志对非ASCII字符没有任何影响。因此需要分别指定小写和大写字母范围。
Ёё
,因为它们在俄语中也被使用。 - nhahtdh
\w
,因此它也可以匹配拉丁字符的单词。 - Pointy