我知道这是一个愚蠢的问题,但是我花了两天的时间在谷歌上搜索,没有任何结果。regExp模式应该是什么样的,以允许我的用户只输入西里尔字符和空格?提前感谢!
w6lpcovy1#
您不能在Javascript中执行此操作,因为Javascript在其正则表达式中甚至不提供最基本的1级Unicode支持。您必须切换语言才能正确执行此操作。您不能为此使用枚举块范围。这会混淆块和脚本,这存在严重缺陷。有150个代码点具有\p{Script=Cyrillic}属性,但缺少\p{Block=Cyrillic}属性。它们位于不同的块中。请注意:
\p{Script=Cyrillic}
\p{Block=Cyrillic}
$ unichars '\p{Script=Cyrillic}' '\P{Block=Cyrillic}' | wc -l 150
此外,在西里尔字母块中有几个非西里尔字母的代码点。您所能做的最好的事情是将所有404个西里尔字母代码点枚举为一个字符类,这可能会证明是非常大的。
$ unichars '\p{Script=Cyrillic}' | wc -l 404
如果你真的想的话,你可以使用the unichars scripts来列出所有这些,你可能还想在那里的时候抓住the uniprops script。
7cwmlq892#
有一个微小的黑客,你可以把使这项工作(不是很有信心,但它的准确性,因此,请仔细检查在生产中使用之前):
`/^[\u0400-\u04FF\s]+$/` (/^[\u0400-\u04FF\s]+$/).test("Привет мир") //true
虽然我不是很确定unicode的支持,但根据维基百科,字符在西里尔范围内一般位于(U+0400-U+04 FF),这个regexp还包括白色和这个片段在我的浏览器控制台工作。
2条答案
按热度按时间w6lpcovy1#
您不能在Javascript中执行此操作,因为Javascript在其正则表达式中甚至不提供最基本的1级Unicode支持。您必须切换语言才能正确执行此操作。
您不能为此使用枚举块范围。这会混淆块和脚本,这存在严重缺陷。有150个代码点具有
\p{Script=Cyrillic}
属性,但缺少\p{Block=Cyrillic}
属性。它们位于不同的块中。请注意:此外,在西里尔字母块中有几个非西里尔字母的代码点。
您所能做的最好的事情是将所有404个西里尔字母代码点枚举为一个字符类,这可能会证明是非常大的。
如果你真的想的话,你可以使用the unichars scripts来列出所有这些,你可能还想在那里的时候抓住the uniprops script。
7cwmlq892#
有一个微小的黑客,你可以把使这项工作(不是很有信心,但它的准确性,因此,请仔细检查在生产中使用之前):
虽然我不是很确定unicode的支持,但根据维基百科,字符在西里尔范围内一般位于(U+0400-U+04 FF),这个regexp还包括白色和这个片段在我的浏览器控制台工作。