Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.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正则表达式以匹配具有非混合unicode字符范围的字符串_Javascript_Regex_Unicode - Fatal编程技术网

Javascript正则表达式以匹配具有非混合unicode字符范围的字符串

Javascript正则表达式以匹配具有非混合unicode字符范围的字符串,javascript,regex,unicode,Javascript,Regex,Unicode,我想要一些关于Javascript正则表达式的帮助 我试图匹配任何只包含基本拉丁(ASCII)字符或只包含希腊Unicode字符的字符串。不允许使用这两个集合中的混合字符的字符串 我有一个匹配完全相反的正则表达式(所有字符串至少包含一个希腊字符和一个拉丁字符),但找不到一种方法来否定它: 提前感谢。您可以使用 ^(?:[\u0000-\u007F]+|[\u0370-\u03FF]+)$ 见 详细信息: ^-字符串的开头 (?:-启动非捕获组(以便锚定可以应用于两个AltetNative)

我想要一些关于Javascript正则表达式的帮助

我试图匹配任何只包含基本拉丁(ASCII)字符或只包含希腊Unicode字符的字符串。不允许使用这两个集合中的混合字符的字符串

我有一个匹配完全相反的正则表达式(所有字符串至少包含一个希腊字符和一个拉丁字符),但找不到一种方法来否定它:

提前感谢。

您可以使用

^(?:[\u0000-\u007F]+|[\u0370-\u03FF]+)$

详细信息

  • ^
    -字符串的开头
  • (?:
    -启动非捕获组(以便锚定可以应用于两个AltetNative):
    • [\u0000-\u007F]+
      -1+ASCII字符
    • |
      -或
    • [\u0370-\u03FF]+
      -1+希腊字符
  • -组结束
  • $
    -字符串结束
    • 具有正确的通用格式。不幸的是,匹配希腊符号并不像
      [\u0370-\u03FF]
      那么简单,这样你就错过了许多希腊符号

      使用,您将执行以下操作:

      /^(?:[\0-\x7F\p]+|\p{Script_Extensions=Greek}+)$/u
      
      在ECMAScript中正式支持Unicode属性转义并在任何地方实现之前,我们可以这样做:


      下面是演示:

      你是说ASCII和希腊语吗?是的,基本拉丁语==ASCII,对吗?当你说“拉丁语”时,听起来好像你想匹配(或不匹配)字母。当您使用
      \x00-\x7F
      时,您将匹配整个ASCII表字符,因此,更适合将这些字符命名为ASCII字符。根据您的建议编辑问题,谢谢。@WiktorStribiżew“the block”将是最正式和准确的名称,尽管Unicode文档中充斥着对ASCII的引用,0-9被称为ASCII数字。不,我想匹配只包含ASCII字符或希腊字符的字符串。不允许使用这两个集合中的混合字符的字符串。@ktsangop好的,现在更清楚了。我认为这个要求应该添加到问题中(并替换可疑的问题)。@ktsangop,如果你觉得有用,记得接受这个答案。(编辑:对不起,您可能已经知道了,我看到了您的low rep,并假设您是新来的。)不幸的是,
      [\u0370-\u03FF]
      不足以匹配希腊语脚本中使用的所有符号。如果您需要匹配所有希腊符号,而不是任意的(?)子集,请参见。@MathiasBynens:据我所知,OP只需要查找字符。我并不是真的想找到如此详细的东西!我主要关心的是能够针对两种不同的语言字母表,并防止用户输入来自两种语言/unicode集的混合字符。无论如何,谢谢你的精确,学习新东西总是很好的!
      /^(?:[\0-\x7F]+|(?:[\u0342\u0345\u0370-\u0373\u0375-\u0377\u037A-\u037D\u037F\u0384\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03E1\u03F0-\u03FF\u1D26-\u1D2A\u1D5D-\u1D61\u1D66-\u1D6A\u1DBF-\u1DC1\u1F00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FC4\u1FC6-\u1FD3\u1FD6-\u1FDB\u1FDD-\u1FEF\u1FF2-\u1FF4\u1FF6-\u1FFE\u2126\uAB65]|\uD800[\uDD40-\uDD8E\uDDA0]|\uD834[\uDE00-\uDE45])+)$/