如何在js中验证字符串只包含来自多个unicode范围的字符

How do I validate in js that a string only contains chars from multiple unicode ranges

本文关键字:unicode 范围 字符 包含 js 验证 字符串      更新时间:2023-09-26

我有一个输入字段,我想验证输入是否对多种语言(和数字)有效

我从网上收集了一些信息,但不知道如何将这些部分组合成一个有效的正则表达式。

从这里我找到了一些我需要的范围:

0000-007F   Basic Latin
0080-00FF   Latin-1 Supplement
0100-017F   Latin Extended-A
0180-024F   Latin Extended-B

从这里我发现了日本范围:

4e00-9fbf, 3040-309f and 30a0-30ff

但是,我如何在javascript中将它们组合为一个regex(包括数字),以便验证它们是否是唯一允许的字符?(我需要更多的语言,但如果我需要理解这个概念,然后我可以自己添加更多的unicode范围)

正则表达式类别'p{L}适合您,它匹配所有已知语言中的字母。但遗憾的是,JavaScript内置的RegExp不支持它。相反,您可以考虑将XRegExp与Unicode Base插件一起使用。

<script src="xregexp.js"></script>
<script src="addons/unicode/unicode-base.js"></script>
<script>
  var unicodeWord = XRegExp("^''p{L}+$");
  unicodeWord.test("Русский"); // true
  unicodeWord.test("日本語"); // true
  unicodeWord.test("العربية"); // true
</script>

来自的代码段http://xregexp.com/plugins